[cfe] Fix pre-inference set/map disambiguation
Closes #36377 Bug: http://dartbug.com/36377 Change-Id: I0a486f467bdc999e6188fb3206f4eed1d8ffb67a Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/98341 Reviewed-by: Aske Simon Christensen <askesc@google.com>
This commit is contained in:
@@ -2456,7 +2456,7 @@ abstract class BodyBuilder extends ScopeListener<JumpTarget>
|
||||
if (entry is MapEntry) {
|
||||
// TODO(danrubel): report the error on the colon
|
||||
addProblem(fasta.templateExpectedButGot.withArguments(','),
|
||||
entry.value.fileOffset - 1, 1);
|
||||
entry.fileOffset, 1);
|
||||
} else {
|
||||
// TODO(danrubel): Revise once control flow and spread
|
||||
// collection entries are supported.
|
||||
@@ -2518,6 +2518,13 @@ abstract class BodyBuilder extends ScopeListener<JumpTarget>
|
||||
final typeArgCount = typeArguments?.length;
|
||||
bool isSet = typeArgCount == 1 ? true : typeArgCount != null ? false : null;
|
||||
|
||||
for (int i = 0; i < setOrMapEntries.length; ++i) {
|
||||
if (setOrMapEntries[i] is! MapEntry &&
|
||||
!isConvertibleToMapEntry(setOrMapEntries[i])) {
|
||||
hasSetEntry = true;
|
||||
}
|
||||
}
|
||||
|
||||
// TODO(danrubel): If the type arguments are not known (null) then
|
||||
// defer set/map determination until after type resolution as per the
|
||||
// unified collection spec: https://github.com/dart-lang/language/pull/200
|
||||
@@ -2527,7 +2534,15 @@ abstract class BodyBuilder extends ScopeListener<JumpTarget>
|
||||
if (isSet) {
|
||||
buildLiteralSet(typeArguments, constKeyword, leftBrace, setOrMapEntries);
|
||||
} else {
|
||||
buildLiteralMap(typeArguments, constKeyword, leftBrace, setOrMapEntries);
|
||||
List<MapEntry> mapEntries = new List<MapEntry>(setOrMapEntries.length);
|
||||
for (int i = 0; i < setOrMapEntries.length; ++i) {
|
||||
if (setOrMapEntries[i] is MapEntry) {
|
||||
mapEntries[i] = setOrMapEntries[i];
|
||||
} else {
|
||||
mapEntries[i] = convertToMapEntry(setOrMapEntries[i]);
|
||||
}
|
||||
}
|
||||
buildLiteralMap(typeArguments, constKeyword, leftBrace, mapEntries);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2551,10 +2566,26 @@ abstract class BodyBuilder extends ScopeListener<JumpTarget>
|
||||
push(forest.literalNull(token));
|
||||
}
|
||||
|
||||
bool isConvertibleToMapEntry(Expression element) {
|
||||
if (element is SpreadElement) return true;
|
||||
if (element is IfElement) {
|
||||
return isConvertibleToMapEntry(element.then) &&
|
||||
(element.otherwise == null ||
|
||||
isConvertibleToMapEntry(element.otherwise));
|
||||
}
|
||||
if (element is ForElement) {
|
||||
return isConvertibleToMapEntry(element.body);
|
||||
}
|
||||
if (element is ForInElement) {
|
||||
return isConvertibleToMapEntry(element.body);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
MapEntry convertToMapEntry(Expression element) {
|
||||
if (element is SpreadElement) {
|
||||
return new SpreadMapEntry(element.expression, element.isNullAware)
|
||||
..fileOffset = element.fileOffset;
|
||||
..fileOffset = element.expression.fileOffset;
|
||||
}
|
||||
if (element is IfElement) {
|
||||
return new IfMapEntry(
|
||||
@@ -2586,7 +2617,7 @@ abstract class BodyBuilder extends ScopeListener<JumpTarget>
|
||||
}
|
||||
|
||||
void buildLiteralMap(List<UnresolvedType<KernelTypeBuilder>> typeArguments,
|
||||
Token constKeyword, Token leftBrace, List<dynamic> setOrMapEntries) {
|
||||
Token constKeyword, Token leftBrace, List<MapEntry> entries) {
|
||||
DartType keyType;
|
||||
DartType valueType;
|
||||
if (typeArguments != null) {
|
||||
@@ -2607,17 +2638,6 @@ abstract class BodyBuilder extends ScopeListener<JumpTarget>
|
||||
valueType = implicitTypeArgument;
|
||||
}
|
||||
|
||||
List<MapEntry> entries = <MapEntry>[];
|
||||
if (setOrMapEntries != null) {
|
||||
for (var entry in setOrMapEntries) {
|
||||
if (entry is MapEntry) {
|
||||
entries.add(entry);
|
||||
} else {
|
||||
entries.add(convertToMapEntry(entry));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Expression node = forest.literalMap(
|
||||
constKeyword,
|
||||
constKeyword != null || constantContext == ConstantContext.inferred,
|
||||
|
||||
+100
-100
@@ -1,288 +1,288 @@
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:106:49: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:106:49: Context: Write to i@6094
|
||||
var list10 = [for (int i = 0; oracle("foo"); i++) 42];
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:107:48: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:107:48: Context: Write to i@6094
|
||||
var set10 = {for (int i = 0; oracle("foo"); i++) 42, null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:108:48: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:108:48: Context: Write to i@6094
|
||||
var map10 = {for (int i = 0; oracle("foo"); i++) "bar": 42, "baz": null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:109:49: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:109:49: Context: Write to i@6094
|
||||
var list11 = [for (int i = 0; oracle("foo"); i++) dynVar];
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:110:48: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:110:48: Context: Write to i@6094
|
||||
var set11 = {for (int i = 0; oracle("foo"); i++) dynVar, null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:111:48: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:111:48: Context: Write to i@6094
|
||||
var map11 = {for (int i = 0; oracle("foo"); i++) "bar": dynVar, "baz": null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:112:49: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:112:49: Context: Write to i@6094
|
||||
var list12 = [for (int i = 0; oracle("foo"); i++) [42]];
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:113:48: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:113:48: Context: Write to i@6094
|
||||
var set12 = {for (int i = 0; oracle("foo"); i++) [42], null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:114:48: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:114:48: Context: Write to i@6094
|
||||
var map12 = {for (int i = 0; oracle("foo"); i++) "bar": [42], "baz": null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:115:49: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:115:49: Context: Write to i@6094
|
||||
var list20 = [for (int i = 0; oracle("foo"); i++) ...[42]];
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:116:48: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:116:48: Context: Write to i@6094
|
||||
var set20 = {for (int i = 0; oracle("foo"); i++) ...[42], null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:117:48: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:117:48: Context: Write to i@6094
|
||||
var map20 = {for (int i = 0; oracle("foo"); i++) ...{"bar": 42}, "baz": null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:118:49: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:118:49: Context: Write to i@6094
|
||||
var list21 = [for (int i = 0; oracle("foo"); i++) ...[dynVar]];
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:119:48: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:119:48: Context: Write to i@6094
|
||||
var set21 = {for (int i = 0; oracle("foo"); i++) ...[dynVar], null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:120:48: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:120:48: Context: Write to i@6094
|
||||
var map21 = {for (int i = 0; oracle("foo"); i++) ...{"bar": dynVar}, "baz": null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:121:49: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:121:49: Context: Write to i@6094
|
||||
var list22 = [for (int i = 0; oracle("foo"); i++) ...[[42]]];
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:122:48: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:122:48: Context: Write to i@6094
|
||||
var set22 = {for (int i = 0; oracle("foo"); i++) ...[[42]], null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:123:48: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:123:48: Context: Write to i@6094
|
||||
var map22 = {for (int i = 0; oracle("foo"); i++) ...{"bar": [42]}, "baz": null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:124:49: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:124:49: Context: Write to i@6094
|
||||
var list30 = [for (int i = 0; oracle("foo"); i++) if (oracle()) ...[42]];
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:125:48: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:125:48: Context: Write to i@6094
|
||||
var set30 = {for (int i = 0; oracle("foo"); i++) if (oracle()) ...[42], null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:126:48: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:126:48: Context: Write to i@6094
|
||||
var map30 = {for (int i = 0; oracle("foo"); i++) if (oracle()) ...{"bar": 42}, "baz": null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:127:49: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:127:49: Context: Write to i@6094
|
||||
var list31 = [for (int i = 0; oracle("foo"); i++) if (oracle()) ...[dynVar]];
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:128:48: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:128:48: Context: Write to i@6094
|
||||
var set31 = {for (int i = 0; oracle("foo"); i++) if (oracle()) ...[dynVar], null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:129:48: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:129:48: Context: Write to i@6094
|
||||
var map31 = {for (int i = 0; oracle("foo"); i++) if (oracle()) ...{"bar": dynVar}, "baz": null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:130:49: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:130:49: Context: Write to i@6094
|
||||
var list33 = [for (int i = 0; oracle("foo"); i++) if (oracle()) ...[[42]]];
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:131:48: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:131:48: Context: Write to i@6094
|
||||
var set33 = {for (int i = 0; oracle("foo"); i++) if (oracle()) ...[[42]], null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:132:48: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:132:48: Context: Write to i@6094
|
||||
var map33 = {for (int i = 0; oracle("foo"); i++) if (oracle()) ...{"bar": [42]}, "baz": null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:133:61: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:133:61: Context: Write to i@6094
|
||||
List<List<int>> list40 = [for (int i = 0; oracle("foo"); i++) ...[[]]];
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:134:59: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:134:59: Context: Write to i@6094
|
||||
Set<List<int>> set40 = {for (int i = 0; oracle("foo"); i++) ...[[]], null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:135:67: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:135:67: Context: Write to i@6094
|
||||
Map<String, List<int>> map40 = {for (int i = 0; oracle("foo"); i++) ...{"bar": []}, "baz": null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:136:61: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:136:61: Context: Write to i@6094
|
||||
List<List<int>> list41 = [for (int i = 0; oracle("foo"); i++) ...{[]}];
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:137:59: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:137:59: Context: Write to i@6094
|
||||
Set<List<int>> set41 = {for (int i = 0; oracle("foo"); i++) ...{[]}, null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:138:61: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:138:61: Context: Write to i@6094
|
||||
List<List<int>> list42 = [for (int i = 0; oracle("foo"); i++) if (oracle()) ...[[]]];
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:139:59: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:139:59: Context: Write to i@6094
|
||||
Set<List<int>> set42 = {for (int i = 0; oracle("foo"); i++) if (oracle()) ...[[]], null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:140:67: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:140:67: Context: Write to i@6094
|
||||
Map<String, List<int>> map42 = {for (int i = 0; oracle("foo"); i++) if (oracle()) ...{"bar": []}, "baz": null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:141:55: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:141:55: Context: Write to i@6094
|
||||
List<int> list50 = [for (int i = 0; oracle("foo"); i++) ...[]];
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:142:53: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:142:53: Context: Write to i@6094
|
||||
Set<int> set50 = {for (int i = 0; oracle("foo"); i++) ...[], null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:143:61: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:143:61: Context: Write to i@6094
|
||||
Map<String, int> map50 = {for (int i = 0; oracle("foo"); i++) ...{}, "baz": null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:144:55: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:144:55: Context: Write to i@6094
|
||||
List<int> list51 = [for (int i = 0; oracle("foo"); i++) ...{}];
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:145:53: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:145:53: Context: Write to i@6094
|
||||
Set<int> set51 = {for (int i = 0; oracle("foo"); i++) ...{}, null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:146:55: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:146:55: Context: Write to i@6094
|
||||
List<int> list52 = [for (int i = 0; oracle("foo"); i++) if (oracle()) ...[]];
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:147:53: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:147:53: Context: Write to i@6094
|
||||
Set<int> set52 = {for (int i = 0; oracle("foo"); i++) if (oracle()) ...[], null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:148:61: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:148:61: Context: Write to i@6094
|
||||
List<List<int>> list60 = [for (int i = 0; oracle("foo"); i++) ...[[]]];
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:149:59: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:149:59: Context: Write to i@6094
|
||||
Set<List<int>> set60 = {for (int i = 0; oracle("foo"); i++) ...[[]], null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:150:67: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:150:67: Context: Write to i@6094
|
||||
Map<String, List<int>> map60 = {for (int i = 0; oracle("foo"); i++) ...{"bar": []}, "baz": null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:151:61: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:151:61: Context: Write to i@6094
|
||||
List<List<int>> list61 = [for (int i = 0; oracle("foo"); i++) if (oracle()) ...[[]]];
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:152:59: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:152:59: Context: Write to i@6094
|
||||
Set<List<int>> set61 = {for (int i = 0; oracle("foo"); i++) if (oracle()) ...[[]], null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:153:67: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:153:67: Context: Write to i@6094
|
||||
Map<String, List<int>> map61 = {for (int i = 0; oracle("foo"); i++) if (oracle()) ...{"bar": []}, "baz": null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:154:61: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:154:61: Context: Write to i@6094
|
||||
List<List<int>> list70 = [for (int i = 0; oracle("foo"); i++) []];
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:155:59: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:155:59: Context: Write to i@6094
|
||||
Set<List<int>> set70 = {for (int i = 0; oracle("foo"); i++) [], null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:156:67: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:156:67: Context: Write to i@6094
|
||||
Map<String, List<int>> map70 = {for (int i = 0; oracle("foo"); i++) "bar": [], "baz": null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:157:61: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:157:61: Context: Write to i@6094
|
||||
List<List<int>> list71 = [for (int i = 0; oracle("foo"); i++) if (oracle()) []];
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:158:59: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:158:59: Context: Write to i@6094
|
||||
Set<List<int>> set71 = {for (int i = 0; oracle("foo"); i++) if (oracle()) [], null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:159:67: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:159:67: Context: Write to i@6094
|
||||
Map<String, List<int>> map71 = {for (int i = 0; oracle("foo"); i++) if (oracle()) "bar": [], "baz": null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:160:49: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:160:49: Context: Write to i@6094
|
||||
var list80 = [for (int i = 0; oracle("foo"); i++) if (oracle()) 42 else 3.14];
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:161:48: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:161:48: Context: Write to i@6094
|
||||
var set80 = {for (int i = 0; oracle("foo"); i++) if (oracle()) 42 else 3.14, null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:162:48: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:162:48: Context: Write to i@6094
|
||||
var map80 = {for (int i = 0; oracle("foo"); i++) if (oracle()) "bar": 42 else "bar": 3.14, "baz": null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:163:49: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:163:49: Context: Write to i@6094
|
||||
var list81 = [for (int i = 0; oracle("foo"); i++) if (oracle()) ...listInt else ...listDouble];
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:164:48: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:164:48: Context: Write to i@6094
|
||||
var set81 = {for (int i = 0; oracle("foo"); i++) if (oracle()) ...listInt else ...listDouble, null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:165:48: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:165:48: Context: Write to i@6094
|
||||
var map81 = {for (int i = 0; oracle("foo"); i++) if (oracle()) ...mapStringInt else ...mapStringDouble, "baz": null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:166:49: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:166:49: Context: Write to i@6094
|
||||
var list82 = [for (int i = 0; oracle("foo"); i++) if (oracle()) ...listInt else ...dynVar];
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:167:48: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:167:48: Context: Write to i@6094
|
||||
var set82 = {for (int i = 0; oracle("foo"); i++) if (oracle()) ...listInt else ...dynVar, null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:168:48: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:168:48: Context: Write to i@6094
|
||||
var map82 = {for (int i = 0; oracle("foo"); i++) if (oracle()) ...mapStringInt else ...dynVar, "baz": null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:169:49: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:169:49: Context: Write to i@6094
|
||||
var list83 = [for (int i = 0; oracle("foo"); i++) if (oracle()) 42 else ...listDouble];
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:170:48: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:170:48: Context: Write to i@6094
|
||||
var set83 = {for (int i = 0; oracle("foo"); i++) if (oracle()) ...listInt else 3.14, null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:171:48: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:171:48: Context: Write to i@6094
|
||||
var map83 = {for (int i = 0; oracle("foo"); i++) if (oracle()) ...mapStringInt else "bar": 3.14, "baz": null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:172:55: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:172:55: Context: Write to i@6094
|
||||
List<int> list90 = [for (int i = 0; oracle("foo"); i++) dynVar];
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:173:53: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:173:53: Context: Write to i@6094
|
||||
Set<int> set90 = {for (int i = 0; oracle("foo"); i++) dynVar, null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:174:61: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:174:61: Context: Write to i@6094
|
||||
Map<String, int> map90 = {for (int i = 0; oracle("foo"); i++) "bar": dynVar, "baz": null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:175:55: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:175:55: Context: Write to i@6094
|
||||
List<int> list91 = [for (int i = 0; oracle("foo"); i++) ...dynVar];
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:176:53: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:176:53: Context: Write to i@6094
|
||||
Set<int> set91 = {for (int i = 0; oracle("foo"); i++) ...dynVar, null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:177:61: Context: Write to i@6069
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:177:61: Context: Write to i@6094
|
||||
Map<String, int> map91 = {for (int i = 0; oracle("foo"); i++) ...dynVar, "baz": null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:178:40: Context: Write to index@5967
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:178:40: Context: Write to index@5992
|
||||
List<int> list100 = <int>[for (index = 0; oracle("foo"); index++) 42];
|
||||
^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:178:65: Context: Write to index@5967
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:178:65: Context: Write to index@5992
|
||||
List<int> list100 = <int>[for (index = 0; oracle("foo"); index++) 42];
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:179:38: Context: Write to index@5967
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:179:38: Context: Write to index@5992
|
||||
Set<int> set100 = <int>{for (index = 0; oracle("foo"); index++) 42};
|
||||
^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:179:63: Context: Write to index@5967
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:179:63: Context: Write to index@5992
|
||||
Set<int> set100 = <int>{for (index = 0; oracle("foo"); index++) 42};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:180:53: Context: Write to index@5967
|
||||
Map<String, int> map100 = <String int>{for (index = 0; oracle("foo"); index++) "bar": 42};
|
||||
^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:180:78: Context: Write to index@5967
|
||||
Map<String, int> map100 = <String int>{for (index = 0; oracle("foo"); index++) "bar": 42};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:190:41: Context: Write to i@12670
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:180:54: Context: Write to index@5992
|
||||
Map<String, int> map100 = <String, int>{for (index = 0; oracle("foo"); index++) "bar": 42};
|
||||
^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:180:79: Context: Write to index@5992
|
||||
Map<String, int> map100 = <String, int>{for (index = 0; oracle("foo"); index++) "bar": 42};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:190:41: Context: Write to i@12696
|
||||
<int>[for (int i = 0; oracle("foo"); i++) "bar"];
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:191:41: Context: Write to i@12670
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:191:41: Context: Write to i@12696
|
||||
<int>{for (int i = 0; oracle("foo"); i++) "bar", null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:192:46: Context: Write to i@12670
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:192:46: Context: Write to i@12696
|
||||
<int, int>{for (int i = 0; oracle("foo"); i++) "bar": "bar", "baz": null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:193:41: Context: Write to i@12670
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:193:41: Context: Write to i@12696
|
||||
<int>[for (int i = 0; oracle("foo"); i++) ...["bar"]];
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:194:41: Context: Write to i@12670
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:194:41: Context: Write to i@12696
|
||||
<int>{for (int i = 0; oracle("foo"); i++) ...["bar"], null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:195:46: Context: Write to i@12670
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:195:46: Context: Write to i@12696
|
||||
<int, int>{for (int i = 0; oracle("foo"); i++) ...{"bar": "bar"}, "baz": null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:196:41: Context: Write to i@12670
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:196:41: Context: Write to i@12696
|
||||
<int>[for (int i = 0; oracle("foo"); i++) ...map];
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:197:41: Context: Write to i@12670
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:197:41: Context: Write to i@12696
|
||||
<int>{for (int i = 0; oracle("foo"); i++) ...map, null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:198:46: Context: Write to i@12670
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:198:46: Context: Write to i@12696
|
||||
<int, int>{for (int i = 0; oracle("foo"); i++) ...list, 42: null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:199:44: Context: Write to i@12670
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:199:44: Context: Write to i@12696
|
||||
<String>[for (int i = 0; oracle("foo"); i++) if (oracle()) 42 else 3.14];
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:200:44: Context: Write to i@12670
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:200:44: Context: Write to i@12696
|
||||
<String>{for (int i = 0; oracle("foo"); i++) if (oracle()) 42 else 3.14, null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:201:52: Context: Write to i@12670
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:201:52: Context: Write to i@12696
|
||||
<String, String>{for (int i = 0; oracle("foo"); i++) if (oracle()) "bar": 42 else "bar": 3.14, "baz": null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:202:41: Context: Write to i@12670
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:202:41: Context: Write to i@12696
|
||||
<int>[for (int i = 0; oracle("foo"); i++) if (oracle()) ...map else 42];
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:203:41: Context: Write to i@12670
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:203:41: Context: Write to i@12696
|
||||
<int>{for (int i = 0; oracle("foo"); i++) if (oracle()) ...map else 42, null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:204:49: Context: Write to i@12670
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:204:49: Context: Write to i@12696
|
||||
<String, int>{for (int i = 0; oracle("foo"); i++) if (oracle()) ...list else "bar": 42, "baz": null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:205:41: Context: Write to i@12670
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:205:41: Context: Write to i@12696
|
||||
<int>[for (int i = 0; oracle("foo"); i++) if (oracle()) 42 else ...map];
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:206:41: Context: Write to i@12670
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:206:41: Context: Write to i@12696
|
||||
<int>{for (int i = 0; oracle("foo"); i++) if (oracle()) 42 else ...map, null};
|
||||
^^
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:207:49: Context: Write to i@12670
|
||||
pkg/front_end/testcases/control_flow_collection_inference.dart:207:49: Context: Write to i@12696
|
||||
<String, int>{for (int i = 0; oracle("foo"); i++) if (oracle()) "bar": 42 else ...list, "baz": null};
|
||||
^^
|
||||
|
||||
@@ -103,9 +103,9 @@ library;
|
||||
// {... null, ... /*@typeArgs=dynamic*/
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/spread_collection_inference.dart:127:6: Error: Expected ',' before this.
|
||||
// pkg/front_end/testcases/spread_collection_inference.dart:127:10: Error: Expected ',' before this.
|
||||
// {... null, ... /*@typeArgs=dynamic*/
|
||||
// ^
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/spread_collection_inference.dart:131:5: Error: Can't spread a value with static type Null.
|
||||
// null};
|
||||
@@ -336,9 +336,9 @@ Try changing the type of the left hand side, or casting the right hand side to '
|
||||
^" as{TypeError} core::int) in #t68;
|
||||
core::Set<dynamic> set71ambiguous = block {
|
||||
final core::Set<dynamic> #t70 = col::LinkedHashSet::•<dynamic>();
|
||||
#t70.{core::Set::add}(invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:127:6: Error: Expected ',' before this.
|
||||
#t70.{core::Set::add}(invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:127:10: Error: Expected ',' before this.
|
||||
{... null, ... /*@typeArgs=dynamic*/
|
||||
^");
|
||||
^");
|
||||
for (final dynamic #t71 in <dynamic>[]) {
|
||||
final dynamic #t72 = #t71 as{TypeError} dynamic;
|
||||
#t70.{core::Set::add}(#t72);
|
||||
|
||||
@@ -103,9 +103,9 @@ library;
|
||||
// {... null, ... /*@typeArgs=dynamic*/
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/spread_collection_inference.dart:127:6: Error: Expected ',' before this.
|
||||
// pkg/front_end/testcases/spread_collection_inference.dart:127:10: Error: Expected ',' before this.
|
||||
// {... null, ... /*@typeArgs=dynamic*/
|
||||
// ^
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/spread_collection_inference.dart:131:5: Error: Can't spread a value with static type Null.
|
||||
// null};
|
||||
@@ -336,9 +336,9 @@ Try changing the type of the left hand side, or casting the right hand side to '
|
||||
^" as{TypeError} core::int) in #t68;
|
||||
core::Set<dynamic> set71ambiguous = block {
|
||||
final core::Set<dynamic> #t70 = col::LinkedHashSet::•<dynamic>();
|
||||
#t70.{core::Set::add}(invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:127:6: Error: Expected ',' before this.
|
||||
#t70.{core::Set::add}(invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:127:10: Error: Expected ',' before this.
|
||||
{... null, ... /*@typeArgs=dynamic*/
|
||||
^");
|
||||
^");
|
||||
for (final dynamic #t71 in <dynamic>[]) {
|
||||
final dynamic #t72 = #t71 as{TypeError} dynamic;
|
||||
#t70.{core::Set::add}(#t72);
|
||||
|
||||
Reference in New Issue
Block a user