[vm] Create dart:_compact_hash library.

This opens possibility for other core libraries to access implementation
details of compact hash maps/sets and call special "core-library-only"
methods.

TEST=ci

CoreLibraryReviewExempt: VM only library change
Change-Id: I1d7524932c34e6fbe2428853dd547d58bef2d061
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/379840
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Slava Egorov <vegorov@google.com>
Reviewed-by: Lasse Nielsen <lrn@google.com>
This commit is contained in:
Vyacheslav Egorov
2024-08-13 09:20:05 +00:00
committed by Commit Queue
parent c008c159ee
commit 196f6c90c2
92 changed files with 1404 additions and 1335 deletions
@@ -337,9 +337,9 @@ Bytecode {
ReturnTOS
}
ConstantPool {
[0] = Class dart:collection::_Set
[0] = Class dart:_compact_hash::_Set
[1] = ObjectRef < dart:core::int >
[2] = DirectCall 'dart:collection::_Set:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
[2] = DirectCall 'dart:_compact_hash::_Set:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
[3] = Reserved
[4] = InterfaceCall 'dart:core::Set::add', ArgDesc num-args 2, num-type-args 0, names []
[5] = Reserved
+6 -6
View File
@@ -23,9 +23,9 @@ mixin KernelNodes {
late final Class hashFieldBaseClass =
index.getClass("dart:_compact_hash", "_HashFieldBase");
late final Class immutableMapClass =
index.getClass("dart:_compact_hash", "WasmImmutableMap");
index.getClass("dart:_compact_hash", "_ConstMap");
late final Class immutableSetClass =
index.getClass("dart:_compact_hash", "WasmImmutableSet");
index.getClass("dart:_compact_hash", "_ConstSet");
// dart:core various classes
late final Class boxedBoolClass = index.getClass("dart:core", "_BoxedBool");
@@ -204,12 +204,12 @@ mixin KernelNodes {
// dart:collection procedures and fields
late final Procedure mapFactory =
index.getProcedure("dart:collection", "LinkedHashMap", "_default");
late final Procedure mapFromWasmArray = index.getProcedure(
"dart:_compact_hash", "WasmDefaultMap", "fromWasmArray");
late final Procedure mapFromWasmArray =
index.getProcedure("dart:_compact_hash", "DefaultMap", "fromWasmArray");
late final Procedure setFactory =
index.getProcedure("dart:collection", "LinkedHashSet", "_default");
late final Procedure setFromWasmArray = index.getProcedure(
"dart:_compact_hash", "WasmDefaultSet", "fromWasmArray");
late final Procedure setFromWasmArray =
index.getProcedure("dart:_compact_hash", "DefaultSet", "fromWasmArray");
late final Procedure growableListEmpty =
index.getProcedure("dart:_list", "GrowableList", "empty");
late final Constructor growableListFromWasmArray =
+4 -4
View File
@@ -473,25 +473,25 @@ class WasmTarget extends Target {
@override
Class concreteMapLiteralClass(CoreTypes coreTypes) {
return _wasmDefaultMap ??=
coreTypes.index.getClass('dart:_compact_hash', 'WasmDefaultMap');
coreTypes.index.getClass('dart:_compact_hash', 'DefaultMap');
}
@override
Class concreteConstMapLiteralClass(CoreTypes coreTypes) {
return _wasmImmutableMap ??=
coreTypes.index.getClass('dart:_compact_hash', 'WasmImmutableMap');
coreTypes.index.getClass('dart:_compact_hash', '_ConstMap');
}
@override
Class concreteSetLiteralClass(CoreTypes coreTypes) {
return _wasmDefaultSet ??=
coreTypes.index.getClass('dart:_compact_hash', 'WasmDefaultSet');
coreTypes.index.getClass('dart:_compact_hash', 'DefaultSet');
}
@override
Class concreteConstSetLiteralClass(CoreTypes coreTypes) {
return _wasmImmutableSet ??=
coreTypes.index.getClass('dart:_compact_hash', 'WasmImmutableSet');
coreTypes.index.getClass('dart:_compact_hash', '_ConstSet');
}
@override
@@ -1111,6 +1111,7 @@ severity: $severity
"dart:core" => defaultDartCoreSource,
"dart:async" => defaultDartAsyncSource,
"dart:collection" => defaultDartCollectionSource,
"dart:_compact_hash" => defaultDartCompactHashSource,
"dart:_internal" => defaultDartInternalSource,
"dart:typed_data" => defaultDartTypedDataSource,
_ => message == null ? "" : "/* ${message.problemMessage} */",
@@ -3357,10 +3358,6 @@ abstract class LinkedHashMap<K, V> implements Map<K, V> {
bool Function(dynamic)? isValidKey}) => null;
}
class _Map<K, V> {
_Map();
}
abstract class LinkedHashSet<E> implements Set<E> {
factory LinkedHashSet(
{bool Function(E, E)? equals,
@@ -3368,16 +3365,22 @@ abstract class LinkedHashSet<E> implements Set<E> {
bool Function(dynamic)? isValidKey}) => null;
}
class _Set<E> {
_Set();
}
class _UnmodifiableSet {
final Map _map;
const _UnmodifiableSet(this._map);
}
""";
/// A minimal implementation of dart:collection that is sufficient to create an
/// instance of [CoreTypes] and compile program.
const String defaultDartCompactHashSource = """
class _Map<K, V> {
}
class _Set<E> {
}
""";
/// A minimal implementation of dart:_internal that is sufficient to create an
/// instance of [CoreTypes] and compile program.
const String defaultDartInternalSource = """
@@ -8,14 +8,14 @@ library;
//
import self as self;
import "dart:core" as core;
import "dart:collection" as col;
import "dart:_compact_hash" as _co;
static method foo() → void {
core::Set<core::int> x = block {
final core::Set<core::int> #t1 = new col::_Set::•<core::int>();
final core::Set<core::int> #t1 = new _co::_Set::•<core::int>();
#t1.{core::Set::add}{Invariant}(1){(core::int) → core::bool};
} =>#t1;
core::Set<core::int> y = block {
final core::Set<core::int> #t2 = new col::_Set::•<core::int>();
final core::Set<core::int> #t2 = new _co::_Set::•<core::int>();
} =>#t2;
}
@@ -2,6 +2,6 @@ Errors: {
}
method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
return block {
final dart.core::Set<dart.core::String> #t1 = new dart.collection::_Set::•<dart.core::String>();
final dart.core::Set<dart.core::String> #t1 = new dart._compact_hash::_Set::•<dart.core::String>();
#t1.{dart.core::Set::add}{Invariant}("a"){(dart.core::String) → dart.core::bool};
} =>#t1;
@@ -20,6 +20,7 @@ library;
import self as self;
import "dart:core" as core;
import "dart:collection" as col;
import "dart:_compact_hash" as _co;
extension type MyList<T extends core::Object? = dynamic>(core::List<T%> it) implements core::List<T%> {
abstract extension-type-member representation-field get it() → core::List<T%>;
@@ -74,7 +75,7 @@ static method test() → dynamic {
- 'Set' is from 'dart:core'.
MySet<String> set = {}; // Error
^" in ( block {
final core::Set<dynamic> #t4 = new col::_Set::•<dynamic>();
final core::Set<dynamic> #t4 = new _co::_Set::•<dynamic>();
} =>#t4) as{TypeError} self::MySet<core::String> /* erasure=core::Set<core::String> */;
self::MyMap<core::String, core::bool> /* erasure=core::Map<core::String, core::bool> */ map = invalid-expression "pkg/front_end/testcases/extension_types/spread.dart:20:29: Error: A value of type 'Map<dynamic, dynamic>' can't be assigned to a variable of type 'MyMap<String, bool>'.
- 'Map' is from 'dart:core'.
@@ -118,7 +118,7 @@ library;
//
import self as self;
import "dart:core" as core;
import "dart:collection" as col;
import "dart:_compact_hash" as _co;
typedef F<X extends self::Class<X> = self::Class<dynamic>> = X;
class Class<T extends core::Object? = dynamic> extends core::Object {
@@ -146,52 +146,52 @@ static method test() → dynamic {
<self::G<self::ConcreteClass>, self::G<self::Class<self::ConcreteClass>>>{};
<self::G<core::Object>, self::G<core::int>>{};
{
final core::Set<self::Class<dynamic>> #t1 = new col::_Set::•<self::Class<dynamic>>();
final core::Set<self::Class<dynamic>> #t1 = new _co::_Set::•<self::Class<dynamic>>();
}
{
final core::Set<dynamic> #t2 = new col::_Set::•<dynamic>();
final core::Set<dynamic> #t2 = new _co::_Set::•<dynamic>();
}
{
final core::Set<self::Class<dynamic>> #t3 = new col::_Set::•<self::Class<dynamic>>();
final core::Set<self::Class<dynamic>> #t3 = new _co::_Set::•<self::Class<dynamic>>();
}
{
final core::Set<self::Class<dynamic>> #t4 = new col::_Set::•<self::Class<dynamic>>();
final core::Set<self::Class<dynamic>> #t4 = new _co::_Set::•<self::Class<dynamic>>();
}
{
final core::Set<core::Object> #t5 = new col::_Set::•<core::Object>();
final core::Set<core::Object> #t5 = new _co::_Set::•<core::Object>();
}
{
final core::Set<core::int> #t6 = new col::_Set::•<core::int>();
final core::Set<core::int> #t6 = new _co::_Set::•<core::int>();
}
{
final core::Set<self::ConcreteClass> #t7 = new col::_Set::•<self::ConcreteClass>();
final core::Set<self::ConcreteClass> #t7 = new _co::_Set::•<self::ConcreteClass>();
}
{
final core::Set<self::Class<self::ConcreteClass>> #t8 = new col::_Set::•<self::Class<self::ConcreteClass>>();
final core::Set<self::Class<self::ConcreteClass>> #t8 = new _co::_Set::•<self::Class<self::ConcreteClass>>();
}
{
final core::Set<self::G<self::Class<dynamic>>> #t9 = new col::_Set::•<self::G<self::Class<dynamic>>>();
final core::Set<self::G<self::Class<dynamic>>> #t9 = new _co::_Set::•<self::G<self::Class<dynamic>>>();
}
{
final core::Set<self::G<self::Class<dynamic>>> #t10 = new col::_Set::•<self::G<self::Class<dynamic>>>();
final core::Set<self::G<self::Class<dynamic>>> #t10 = new _co::_Set::•<self::G<self::Class<dynamic>>>();
}
{
final core::Set<self::G<self::Class<dynamic>>> #t11 = new col::_Set::•<self::G<self::Class<dynamic>>>();
final core::Set<self::G<self::Class<dynamic>>> #t11 = new _co::_Set::•<self::G<self::Class<dynamic>>>();
}
{
final core::Set<self::G<self::Class<dynamic>>> #t12 = new col::_Set::•<self::G<self::Class<dynamic>>>();
final core::Set<self::G<self::Class<dynamic>>> #t12 = new _co::_Set::•<self::G<self::Class<dynamic>>>();
}
{
final core::Set<self::G<self::ConcreteClass>> #t13 = new col::_Set::•<self::G<self::ConcreteClass>>();
final core::Set<self::G<self::ConcreteClass>> #t13 = new _co::_Set::•<self::G<self::ConcreteClass>>();
}
{
final core::Set<self::G<self::Class<self::ConcreteClass>>> #t14 = new col::_Set::•<self::G<self::Class<self::ConcreteClass>>>();
final core::Set<self::G<self::Class<self::ConcreteClass>>> #t14 = new _co::_Set::•<self::G<self::Class<self::ConcreteClass>>>();
}
{
final core::Set<self::G<core::Object>> #t15 = new col::_Set::•<self::G<core::Object>>();
final core::Set<self::G<core::Object>> #t15 = new _co::_Set::•<self::G<core::Object>>();
}
{
final core::Set<self::G<core::int>> #t16 = new col::_Set::•<self::G<core::int>>();
final core::Set<self::G<core::int>> #t16 = new _co::_Set::•<self::G<core::int>>();
}
core::_GrowableList::•<self::Class<dynamic>>(0);
core::_GrowableList::•<dynamic>(0);
@@ -181,7 +181,7 @@ library;
//
import self as self;
import "dart:core" as core;
import "dart:collection" as col;
import "dart:_compact_hash" as _co;
import "dart:collection";
@@ -354,7 +354,7 @@ static method main() → dynamic {
core::print(#C11);
core::print(#C14);
core::print( block {
final core::Set<core::String> #t2 = new col::_Set::•<core::String>();
final core::Set<core::String> #t2 = new _co::_Set::•<core::String>();
#t2.{core::Set::add}{Invariant}("hello"){(core::String) → core::bool};
} =>#t2);
core::print(#C16);
@@ -207,7 +207,7 @@ library;
//
import self as self;
import "dart:core" as core;
import "dart:collection" as col;
import "dart:_compact_hash" as _co;
import "org-dartlang-testcase:///potentially_constant_type_lib1.dart";
@@ -232,7 +232,7 @@ class Class<T extends core::Object? = dynamic> extends core::Object /*hasConstCo
final field dynamic field16;
const constructor •(dynamic o) → self::Class<self::Class::T%>
: self::Class::field1 = self::Class::T%, self::Class::field2 = self::Class<self::Class::T%>, self::Class::field3 = #C1<self::Class::T%>, self::Class::field4 = #C1<self::Class::T%>, self::Class::field5 = core::_GrowableList::•<invalid-type>(0), self::Class::field6 = block {
final core::Set<invalid-type> #t1 = new col::_Set::•<invalid-type>();
final core::Set<invalid-type> #t1 = new _co::_Set::•<invalid-type>();
} =>#t1, self::Class::field7 = <invalid-type, invalid-type>{}, self::Class::field8 = o is self::Class::T%, self::Class::field9 = o is self::Class<self::Class::T%>, self::Class::field10 = o as self::Class::T%, self::Class::field11 = o{self::Class::T%} as self::Class<self::Class::T%>, self::Class::field12 = #C2<self::Class::T%>, self::Class::field13 = #C2<self::Class::T%>, self::Class::field14 = #C1<self::Class<self::Class::T%>>, self::Class::field15 = core::_GrowableList::•<self::Class<invalid-type>>(0), self::Class::field16 = #C3, super core::Object::•()
;
method method() → void {
@@ -432,7 +432,7 @@ library;
//
import self as self2;
import "dart:core" as core;
import "dart:collection" as col;
import "dart:_compact_hash" as _co;
class Class<T extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/ {
final field dynamic field1;
@@ -446,7 +446,7 @@ class Class<T extends core::Object? = dynamic> extends core::Object /*hasConstCo
final field dynamic field15;
const constructor •(dynamic o) → self2::Class<self2::Class::T%>
: self2::Class::field1 = #C4, self2::Class::field5 = core::_GrowableList::•<invalid-type>(0), self2::Class::field6 = block {
final core::Set<invalid-type> #t2 = new col::_Set::•<invalid-type>();
final core::Set<invalid-type> #t2 = new _co::_Set::•<invalid-type>();
} =>#t2, self2::Class::field7 = <invalid-type, invalid-type>{}, self2::Class::field8 = o is self2::Class::T%, self2::Class::field9 = o is self2::Class<self2::Class::T%>, self2::Class::field10 = o as self2::Class::T%, self2::Class::field11 = o{self2::Class::T%} as self2::Class<self2::Class::T%>, self2::Class::field15 = core::_GrowableList::•<self2::Class<invalid-type>>(0), super core::Object::•()
;
method method() → void {
@@ -1,7 +1,7 @@
library;
import self as self;
import "dart:core" as core;
import "dart:collection" as col;
import "dart:_compact_hash" as _co;
static method main() → dynamic {
final core::List<core::int> aList = block {
@@ -34,7 +34,7 @@ static method main() → dynamic {
#t1.{core::List::add}{Invariant}(i){(core::int) → void};
} =>#t1;
final core::Set<core::int> aSet = block {
final core::Set<core::int> #t2 = new col::_Set::•<core::int>();
final core::Set<core::int> #t2 = new _co::_Set::•<core::int>();
#t2.{core::Set::add}{Invariant}(1){(core::int) → core::bool};
if(self::oracle() as{TypeError,ForDynamic} core::bool)
#t2.{core::Set::add}{Invariant}(2){(core::int) → core::bool};
@@ -423,7 +423,7 @@ library;
//
import self as self;
import "dart:core" as core;
import "dart:collection" as col;
import "dart:_compact_hash" as _co;
import "dart:async" as asy;
class A extends core::Object {
@@ -447,7 +447,7 @@ static method testIfElement(dynamic dynVar, core::List<core::int> listInt, core:
#t1.{core::List::add}{Invariant}(42){(core::int) → void};
} =>#t1;
core::Set<core::int?> set10 = block {
final core::Set<core::int?> #t2 = new col::_Set::•<core::int?>();
final core::Set<core::int?> #t2 = new _co::_Set::•<core::int?>();
if(self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool)
#t2.{core::Set::add}{Invariant}(42){(core::int?) → core::bool};
#t2.{core::Set::add}{Invariant}(null){(core::int?) → core::bool};
@@ -464,7 +464,7 @@ static method testIfElement(dynamic dynVar, core::List<core::int> listInt, core:
#t4.{core::List::add}{Invariant}(dynVar){(dynamic) → void};
} =>#t4;
core::Set<dynamic> set11 = block {
final core::Set<dynamic> #t5 = new col::_Set::•<dynamic>();
final core::Set<dynamic> #t5 = new _co::_Set::•<dynamic>();
if(self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool)
#t5.{core::Set::add}{Invariant}(dynVar){(dynamic) → core::bool};
#t5.{core::Set::add}{Invariant}(null){(dynamic) → core::bool};
@@ -481,7 +481,7 @@ static method testIfElement(dynamic dynVar, core::List<core::int> listInt, core:
#t7.{core::List::add}{Invariant}(core::_GrowableList::_literal1<core::int>(42)){(core::List<core::int>) → void};
} =>#t7;
core::Set<core::List<core::int>?> set12 = block {
final core::Set<core::List<core::int>?> #t8 = new col::_Set::•<core::List<core::int>?>();
final core::Set<core::List<core::int>?> #t8 = new _co::_Set::•<core::List<core::int>?>();
if(self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool)
#t8.{core::Set::add}{Invariant}(core::_GrowableList::_literal1<core::int>(42)){(core::List<core::int>?) → core::bool};
#t8.{core::Set::add}{Invariant}(null){(core::List<core::int>?) → core::bool};
@@ -498,7 +498,7 @@ static method testIfElement(dynamic dynVar, core::List<core::int> listInt, core:
#t10.{core::List::addAll}{Invariant}(core::_GrowableList::_literal1<core::int>(42)){(core::Iterable<core::int>) → void};
} =>#t10;
core::Set<core::int?> set20 = block {
final core::Set<core::int?> #t11 = new col::_Set::•<core::int?>();
final core::Set<core::int?> #t11 = new _co::_Set::•<core::int?>();
if(self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool)
#t11.{core::Set::addAll}{Invariant}(core::_GrowableList::_literal1<core::int>(42)){(core::Iterable<core::int?>) → void};
#t11.{core::Set::add}{Invariant}(null){(core::int?) → core::bool};
@@ -515,7 +515,7 @@ static method testIfElement(dynamic dynVar, core::List<core::int> listInt, core:
#t13.{core::List::addAll}{Invariant}(core::_GrowableList::_literal1<dynamic>(dynVar)){(core::Iterable<dynamic>) → void};
} =>#t13;
core::Set<dynamic> set21 = block {
final core::Set<dynamic> #t14 = new col::_Set::•<dynamic>();
final core::Set<dynamic> #t14 = new _co::_Set::•<dynamic>();
if(self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool)
#t14.{core::Set::addAll}{Invariant}(core::_GrowableList::_literal1<dynamic>(dynVar)){(core::Iterable<dynamic>) → void};
#t14.{core::Set::add}{Invariant}(null){(dynamic) → core::bool};
@@ -532,7 +532,7 @@ static method testIfElement(dynamic dynVar, core::List<core::int> listInt, core:
#t16.{core::List::addAll}{Invariant}(core::_GrowableList::_literal1<core::List<core::int>>(core::_GrowableList::_literal1<core::int>(42))){(core::Iterable<core::List<core::int>>) → void};
} =>#t16;
core::Set<core::List<core::int>?> set22 = block {
final core::Set<core::List<core::int>?> #t17 = new col::_Set::•<core::List<core::int>?>();
final core::Set<core::List<core::int>?> #t17 = new _co::_Set::•<core::List<core::int>?>();
if(self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool)
#t17.{core::Set::addAll}{Invariant}(core::_GrowableList::_literal1<core::List<core::int>>(core::_GrowableList::_literal1<core::int>(42))){(core::Iterable<core::List<core::int>?>) → void};
#t17.{core::Set::add}{Invariant}(null){(core::List<core::int>?) → core::bool};
@@ -550,7 +550,7 @@ static method testIfElement(dynamic dynVar, core::List<core::int> listInt, core:
#t19.{core::List::addAll}{Invariant}(core::_GrowableList::_literal1<core::int>(42)){(core::Iterable<core::int>) → void};
} =>#t19;
core::Set<core::int?> set30 = block {
final core::Set<core::int?> #t20 = new col::_Set::•<core::int?>();
final core::Set<core::int?> #t20 = new _co::_Set::•<core::int?>();
if(self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool)
if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool)
#t20.{core::Set::addAll}{Invariant}(core::_GrowableList::_literal1<core::int>(42)){(core::Iterable<core::int?>) → void};
@@ -570,7 +570,7 @@ static method testIfElement(dynamic dynVar, core::List<core::int> listInt, core:
#t22.{core::List::addAll}{Invariant}(core::_GrowableList::_literal1<dynamic>(dynVar)){(core::Iterable<dynamic>) → void};
} =>#t22;
core::Set<dynamic> set31 = block {
final core::Set<dynamic> #t23 = new col::_Set::•<dynamic>();
final core::Set<dynamic> #t23 = new _co::_Set::•<dynamic>();
if(self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool)
if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool)
#t23.{core::Set::addAll}{Invariant}(core::_GrowableList::_literal1<dynamic>(dynVar)){(core::Iterable<dynamic>) → void};
@@ -590,7 +590,7 @@ static method testIfElement(dynamic dynVar, core::List<core::int> listInt, core:
#t25.{core::List::addAll}{Invariant}(core::_GrowableList::_literal1<core::List<core::int>>(core::_GrowableList::_literal1<core::int>(42))){(core::Iterable<core::List<core::int>>) → void};
} =>#t25;
core::Set<core::List<core::int>?> set33 = block {
final core::Set<core::List<core::int>?> #t26 = new col::_Set::•<core::List<core::int>?>();
final core::Set<core::List<core::int>?> #t26 = new _co::_Set::•<core::List<core::int>?>();
if(self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool)
if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool)
#t26.{core::Set::addAll}{Invariant}(core::_GrowableList::_literal1<core::List<core::int>>(core::_GrowableList::_literal1<core::int>(42))){(core::Iterable<core::List<core::int>?>) → void};
@@ -609,7 +609,7 @@ static method testIfElement(dynamic dynVar, core::List<core::int> listInt, core:
#t28.{core::List::addAll}{Invariant}(core::_GrowableList::_literal1<core::List<core::int>>(core::_GrowableList::•<core::int>(0))){(core::Iterable<core::List<core::int>>) → void};
} =>#t28;
core::Set<core::List<core::int>?> set40 = block {
final core::Set<core::List<core::int>?> #t29 = new col::_Set::•<core::List<core::int>?>();
final core::Set<core::List<core::int>?> #t29 = new _co::_Set::•<core::List<core::int>?>();
if(self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool)
#t29.{core::Set::addAll}{Invariant}(core::_GrowableList::_literal1<core::List<core::int>?>(core::_GrowableList::•<core::int>(0))){(core::Iterable<core::List<core::int>?>) → void};
#t29.{core::Set::add}{Invariant}(null){(core::List<core::int>?) → core::bool};
@@ -621,15 +621,15 @@ static method testIfElement(dynamic dynVar, core::List<core::int> listInt, core:
final core::List<core::List<core::int>> #t30 = core::_GrowableList::•<core::List<core::int>>(0);
if(self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool)
#t30.{core::List::addAll}{Invariant}( block {
final core::Set<core::List<core::int>> #t31 = new col::_Set::•<core::List<core::int>>();
final core::Set<core::List<core::int>> #t31 = new _co::_Set::•<core::List<core::int>>();
#t31.{core::Set::add}{Invariant}(core::_GrowableList::•<core::int>(0)){(core::List<core::int>) → core::bool};
} =>#t31){(core::Iterable<core::List<core::int>>) → void};
} =>#t30;
core::Set<core::List<core::int>?> set41 = block {
final core::Set<core::List<core::int>?> #t32 = new col::_Set::•<core::List<core::int>?>();
final core::Set<core::List<core::int>?> #t32 = new _co::_Set::•<core::List<core::int>?>();
if(self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool)
#t32.{core::Set::addAll}{Invariant}( block {
final core::Set<core::List<core::int>?> #t33 = new col::_Set::•<core::List<core::int>?>();
final core::Set<core::List<core::int>?> #t33 = new _co::_Set::•<core::List<core::int>?>();
#t33.{core::Set::add}{Invariant}(core::_GrowableList::•<core::int>(0)){(core::List<core::int>?) → core::bool};
} =>#t33){(core::Iterable<core::List<core::int>?>) → void};
#t32.{core::Set::add}{Invariant}(null){(core::List<core::int>?) → core::bool};
@@ -641,7 +641,7 @@ static method testIfElement(dynamic dynVar, core::List<core::int> listInt, core:
#t34.{core::List::addAll}{Invariant}(core::_GrowableList::_literal1<core::List<core::int>>(core::_GrowableList::•<core::int>(0))){(core::Iterable<core::List<core::int>>) → void};
} =>#t34;
core::Set<core::List<core::int>?> set42 = block {
final core::Set<core::List<core::int>?> #t35 = new col::_Set::•<core::List<core::int>?>();
final core::Set<core::List<core::int>?> #t35 = new _co::_Set::•<core::List<core::int>?>();
if(self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool)
if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool)
#t35.{core::Set::addAll}{Invariant}(core::_GrowableList::_literal1<core::List<core::int>?>(core::_GrowableList::•<core::int>(0))){(core::Iterable<core::List<core::int>?>) → void};
@@ -660,7 +660,7 @@ static method testIfElement(dynamic dynVar, core::List<core::int> listInt, core:
#t37.{core::List::addAll}{Invariant}(core::_GrowableList::•<core::int>(0)){(core::Iterable<core::int>) → void};
} =>#t37;
core::Set<core::int?> set50 = block {
final core::Set<core::int?> #t38 = new col::_Set::•<core::int?>();
final core::Set<core::int?> #t38 = new _co::_Set::•<core::int?>();
if(self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool)
#t38.{core::Set::addAll}{Invariant}(core::_GrowableList::•<core::int?>(0)){(core::Iterable<core::int?>) → void};
#t38.{core::Set::add}{Invariant}(null){(core::int?) → core::bool};
@@ -675,14 +675,14 @@ static method testIfElement(dynamic dynVar, core::List<core::int> listInt, core:
final core::List<core::int> #t40 = core::_GrowableList::•<core::int>(0);
if(self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool)
#t40.{core::List::addAll}{Invariant}( block {
final core::Set<core::int> #t41 = new col::_Set::•<core::int>();
final core::Set<core::int> #t41 = new _co::_Set::•<core::int>();
} =>#t41){(core::Iterable<core::int>) → void};
} =>#t40;
core::Set<core::int?> set51 = block {
final core::Set<core::int?> #t42 = new col::_Set::•<core::int?>();
final core::Set<core::int?> #t42 = new _co::_Set::•<core::int?>();
if(self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool)
#t42.{core::Set::addAll}{Invariant}( block {
final core::Set<core::int?> #t43 = new col::_Set::•<core::int?>();
final core::Set<core::int?> #t43 = new _co::_Set::•<core::int?>();
} =>#t43){(core::Iterable<core::int?>) → void};
#t42.{core::Set::add}{Invariant}(null){(core::int?) → core::bool};
} =>#t42;
@@ -693,7 +693,7 @@ static method testIfElement(dynamic dynVar, core::List<core::int> listInt, core:
#t44.{core::List::addAll}{Invariant}(core::_GrowableList::•<core::int>(0)){(core::Iterable<core::int>) → void};
} =>#t44;
core::Set<core::int?> set52 = block {
final core::Set<core::int?> #t45 = new col::_Set::•<core::int?>();
final core::Set<core::int?> #t45 = new _co::_Set::•<core::int?>();
if(self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool)
if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool)
#t45.{core::Set::addAll}{Invariant}(core::_GrowableList::•<core::int?>(0)){(core::Iterable<core::int?>) → void};
@@ -712,7 +712,7 @@ static method testIfElement(dynamic dynVar, core::List<core::int> listInt, core:
#t47.{core::List::addAll}{Invariant}(core::_GrowableList::_literal1<core::List<core::int>>(core::_GrowableList::•<core::int>(0))){(core::Iterable<core::List<core::int>>) → void};
} =>#t47;
core::Set<core::List<core::int>?> set60 = block {
final core::Set<core::List<core::int>?> #t48 = new col::_Set::•<core::List<core::int>?>();
final core::Set<core::List<core::int>?> #t48 = new _co::_Set::•<core::List<core::int>?>();
if(self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool)
#t48.{core::Set::addAll}{Invariant}(core::_GrowableList::_literal1<core::List<core::int>?>(core::_GrowableList::•<core::int>(0))){(core::Iterable<core::List<core::int>?>) → void};
#t48.{core::Set::add}{Invariant}(null){(core::List<core::int>?) → core::bool};
@@ -730,7 +730,7 @@ static method testIfElement(dynamic dynVar, core::List<core::int> listInt, core:
#t50.{core::List::addAll}{Invariant}(core::_GrowableList::_literal1<core::List<core::int>>(core::_GrowableList::•<core::int>(0))){(core::Iterable<core::List<core::int>>) → void};
} =>#t50;
core::Set<core::List<core::int>?> set61 = block {
final core::Set<core::List<core::int>?> #t51 = new col::_Set::•<core::List<core::int>?>();
final core::Set<core::List<core::int>?> #t51 = new _co::_Set::•<core::List<core::int>?>();
if(self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool)
if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool)
#t51.{core::Set::addAll}{Invariant}(core::_GrowableList::_literal1<core::List<core::int>?>(core::_GrowableList::•<core::int>(0))){(core::Iterable<core::List<core::int>?>) → void};
@@ -749,7 +749,7 @@ static method testIfElement(dynamic dynVar, core::List<core::int> listInt, core:
#t53.{core::List::add}{Invariant}(core::_GrowableList::•<core::int>(0)){(core::List<core::int>) → void};
} =>#t53;
core::Set<core::List<core::int>?> set70 = block {
final core::Set<core::List<core::int>?> #t54 = new col::_Set::•<core::List<core::int>?>();
final core::Set<core::List<core::int>?> #t54 = new _co::_Set::•<core::List<core::int>?>();
if(self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool)
#t54.{core::Set::add}{Invariant}(core::_GrowableList::•<core::int>(0)){(core::List<core::int>?) → core::bool};
#t54.{core::Set::add}{Invariant}(null){(core::List<core::int>?) → core::bool};
@@ -761,7 +761,7 @@ static method testIfElement(dynamic dynVar, core::List<core::int> listInt, core:
#t55.{core::List::add}{Invariant}(core::_GrowableList::•<core::int>(0)){(core::List<core::int>) → void};
} =>#t55;
core::Set<core::List<core::int>?> set71 = block {
final core::Set<core::List<core::int>?> #t56 = new col::_Set::•<core::List<core::int>?>();
final core::Set<core::List<core::int>?> #t56 = new _co::_Set::•<core::List<core::int>?>();
if(self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool)
if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool)
#t56.{core::Set::add}{Invariant}(core::_GrowableList::•<core::int>(0)){(core::List<core::int>?) → core::bool};
@@ -775,7 +775,7 @@ static method testIfElement(dynamic dynVar, core::List<core::int> listInt, core:
#t57.{core::List::add}{Invariant}(3.14){(core::num) → void};
} =>#t57;
core::Set<core::num?> set80 = block {
final core::Set<core::num?> #t58 = new col::_Set::•<core::num?>();
final core::Set<core::num?> #t58 = new _co::_Set::•<core::num?>();
if(self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool)
#t58.{core::Set::add}{Invariant}(42){(core::num?) → core::bool};
else
@@ -798,7 +798,7 @@ static method testIfElement(dynamic dynVar, core::List<core::int> listInt, core:
#t60.{core::List::addAll}{Invariant}(listDouble){(core::Iterable<core::num>) → void};
} =>#t60;
core::Set<core::num?> set81 = block {
final core::Set<core::num?> #t61 = new col::_Set::•<core::num?>();
final core::Set<core::num?> #t61 = new _co::_Set::•<core::num?>();
if(self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool)
#t61.{core::Set::addAll}{Invariant}(listInt){(core::Iterable<core::num?>) → void};
else
@@ -821,7 +821,7 @@ static method testIfElement(dynamic dynVar, core::List<core::int> listInt, core:
#t63.{core::List::addAll}{Invariant}(dynVar as{TypeError,ForDynamic} core::Iterable<dynamic>){(core::Iterable<dynamic>) → void};
} =>#t63;
core::Set<dynamic> set82 = block {
final core::Set<dynamic> #t64 = new col::_Set::•<dynamic>();
final core::Set<dynamic> #t64 = new _co::_Set::•<dynamic>();
if(self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool)
#t64.{core::Set::addAll}{Invariant}(listInt){(core::Iterable<dynamic>) → void};
else
@@ -829,7 +829,7 @@ static method testIfElement(dynamic dynVar, core::List<core::int> listInt, core:
#t64.{core::Set::add}{Invariant}(null){(dynamic) → core::bool};
} =>#t64;
core::Set<dynamic> map82 = block {
final core::Set<dynamic> #t65 = new col::_Set::•<dynamic>();
final core::Set<dynamic> #t65 = new _co::_Set::•<dynamic>();
if(self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool)
#t65.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:71:38: Error: Unexpected type 'Map<String, int>' of a spread. Expected 'dynamic' or an Iterable.
- 'Map' is from 'dart:core'.
@@ -847,7 +847,7 @@ static method testIfElement(dynamic dynVar, core::List<core::int> listInt, core:
#t66.{core::List::addAll}{Invariant}(listDouble){(core::Iterable<core::num>) → void};
} =>#t66;
core::Set<core::num?> set83 = block {
final core::Set<core::num?> #t67 = new col::_Set::•<core::num?>();
final core::Set<core::num?> #t67 = new _co::_Set::•<core::num?>();
if(self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool)
#t67.{core::Set::addAll}{Invariant}(listInt){(core::Iterable<core::num?>) → void};
else
@@ -868,7 +868,7 @@ static method testIfElement(dynamic dynVar, core::List<core::int> listInt, core:
#t69.{core::List::add}{Invariant}(dynVar as{TypeError,ForDynamic} core::int){(core::int) → void};
} =>#t69;
core::Set<core::int?> set90 = block {
final core::Set<core::int?> #t70 = new col::_Set::•<core::int?>();
final core::Set<core::int?> #t70 = new _co::_Set::•<core::int?>();
if(self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool)
#t70.{core::Set::add}{Invariant}(dynVar as{TypeError,ForDynamic} core::int?){(core::int?) → core::bool};
#t70.{core::Set::add}{Invariant}(null){(core::int?) → core::bool};
@@ -893,7 +893,7 @@ static method testIfElement(dynamic dynVar, core::List<core::int> listInt, core:
}
} =>#t72;
core::Set<core::int?> set91 = block {
final core::Set<core::int?> #t75 = new col::_Set::•<core::int?>();
final core::Set<core::int?> #t75 = new _co::_Set::•<core::int?>();
if(self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool) {
synthesized core::Iterator<dynamic> :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Iterable<dynamic>).{core::Iterable::iterator}{core::Iterator<dynamic>};
for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
@@ -927,7 +927,7 @@ static method testIfElement(dynamic dynVar, core::List<core::int> listInt, core:
#t82.{core::List::add}{Invariant}(42){(core::int) → void};
} =>#t82;
core::Set<core::int> set100 = block {
final core::Set<core::int> #t83 = new col::_Set::•<core::int>();
final core::Set<core::int> #t83 = new _co::_Set::•<core::int>();
if(dynVar as{TypeError,ForDynamic} core::bool)
#t83.{core::Set::add}{Invariant}(42){(core::int) → core::bool};
} =>#t83;
@@ -946,7 +946,7 @@ static method testIfElementErrors(core::Map<core::int, core::int> map) → dynam
^" in "bar" as{TypeError} core::int){(core::int) → void};
}
{
final core::Set<core::int?> #t86 = new col::_Set::•<core::int?>();
final core::Set<core::int?> #t86 = new _co::_Set::•<core::int?>();
if(self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool)
#t86.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:88:29: Error: A value of type 'String' can't be assigned to a variable of type 'int?'.
<int?>{if (oracle(\"foo\")) \"bar\", null};
@@ -969,7 +969,7 @@ static method testIfElementErrors(core::Map<core::int, core::int> map) → dynam
^" in "bar" as{TypeError} core::int)){(core::Iterable<core::int>) → void};
}
{
final core::Set<core::int?> #t89 = new col::_Set::•<core::int?>();
final core::Set<core::int?> #t89 = new _co::_Set::•<core::int?>();
if(self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool)
#t89.{core::Set::addAll}{Invariant}(core::_GrowableList::_literal1<core::int?>(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:91:33: Error: A value of type 'String' can't be assigned to a variable of type 'int?'.
<int?>{if (oracle(\"foo\")) ...[\"bar\"], null};
@@ -993,7 +993,7 @@ static method testIfElementErrors(core::Map<core::int, core::int> map) → dynam
^"){(core::int) → void};
}
{
final core::Set<core::int?> #t92 = new col::_Set::•<core::int?>();
final core::Set<core::int?> #t92 = new _co::_Set::•<core::int?>();
if(self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool)
#t92.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:94:32: Error: Unexpected type 'Map<int, int>' of a spread. Expected 'dynamic' or an Iterable.
- 'Map' is from 'dart:core'.
@@ -1020,7 +1020,7 @@ static method testIfElementErrors(core::Map<core::int, core::int> map) → dynam
^" in 3.14 as{TypeError} core::String){(core::String) → void};
}
{
final core::Set<core::String?> #t94 = new col::_Set::•<core::String?>();
final core::Set<core::String?> #t94 = new _co::_Set::•<core::String?>();
if(self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool)
#t94.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:97:32: Error: A value of type 'int' can't be assigned to a variable of type 'String?'.
<String?>{if (oracle(\"foo\")) 42 else 3.14, null};
@@ -1054,7 +1054,7 @@ static method testIfElementErrors(core::Map<core::int, core::int> map) → dynam
#t96.{core::List::add}{Invariant}(42){(core::int) → void};
}
{
final core::Set<core::int?> #t97 = new col::_Set::•<core::int?>();
final core::Set<core::int?> #t97 = new _co::_Set::•<core::int?>();
if(self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool)
#t97.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:100:32: Error: Unexpected type 'Map<int, int>' of a spread. Expected 'dynamic' or an Iterable.
- 'Map' is from 'dart:core'.
@@ -1082,7 +1082,7 @@ static method testIfElementErrors(core::Map<core::int, core::int> map) → dynam
^"){(core::int) → void};
}
{
final core::Set<core::int?> #t99 = new col::_Set::•<core::int?>();
final core::Set<core::int?> #t99 = new _co::_Set::•<core::int?>();
if(self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool)
#t99.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:103:32: Error: Unexpected type 'Map<int, int>' of a spread. Expected 'dynamic' or an Iterable.
- 'Map' is from 'dart:core'.
@@ -1125,7 +1125,7 @@ static method testIfElementErrors(core::Map<core::int, core::int> map) → dynam
#t100.{core::List::add}{Invariant}(42){(core::int) → void};
} =>#t100;
core::Set<core::int> set20 = block {
final core::Set<core::int> #t101 = new col::_Set::•<core::int>();
final core::Set<core::int> #t101 = new _co::_Set::•<core::int>();
if(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:113:25: Error: A value of type 'int' can't be assigned to a variable of type 'bool'.
Set<int> set20 = {if (42) 42};
^" in 42 as{TypeError} core::bool)
@@ -1150,7 +1150,7 @@ static method testIfElementErrors(core::Map<core::int, core::int> map) → dynam
^" in 42 as{TypeError} core::String){(core::String) → void};
} =>#t103;
core::Set<core::String> set40 = block {
final core::Set<core::String> #t104 = new col::_Set::•<core::String>();
final core::Set<core::String> #t104 = new _co::_Set::•<core::String>();
if(self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool)
#t104.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:116:51: Error: A value of type 'bool' can't be assigned to a variable of type 'String'.
Set<String> set40 = <String>{if (oracle(\"foo\")) true else 42};
@@ -1190,7 +1190,7 @@ static method testForElement(dynamic dynVar, core::List<core::int> listInt, core
#t107.{core::List::add}{Invariant}(42){(core::int) → void};
} =>#t107;
core::Set<core::int?> set10 = block {
final core::Set<core::int?> #t108 = new col::_Set::•<core::int?>();
final core::Set<core::int?> #t108 = new _co::_Set::•<core::int?>();
for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
#t108.{core::Set::add}{Invariant}(42){(core::int?) → core::bool};
#t108.{core::Set::add}{Invariant}(null){(core::int?) → core::bool};
@@ -1207,7 +1207,7 @@ static method testForElement(dynamic dynVar, core::List<core::int> listInt, core
#t110.{core::List::add}{Invariant}(dynVar){(dynamic) → void};
} =>#t110;
core::Set<dynamic> set11 = block {
final core::Set<dynamic> #t111 = new col::_Set::•<dynamic>();
final core::Set<dynamic> #t111 = new _co::_Set::•<dynamic>();
for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
#t111.{core::Set::add}{Invariant}(dynVar){(dynamic) → core::bool};
#t111.{core::Set::add}{Invariant}(null){(dynamic) → core::bool};
@@ -1224,7 +1224,7 @@ static method testForElement(dynamic dynVar, core::List<core::int> listInt, core
#t113.{core::List::add}{Invariant}(core::_GrowableList::_literal1<core::int>(42)){(core::List<core::int>) → void};
} =>#t113;
core::Set<core::List<core::int>?> set12 = block {
final core::Set<core::List<core::int>?> #t114 = new col::_Set::•<core::List<core::int>?>();
final core::Set<core::List<core::int>?> #t114 = new _co::_Set::•<core::List<core::int>?>();
for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
#t114.{core::Set::add}{Invariant}(core::_GrowableList::_literal1<core::int>(42)){(core::List<core::int>?) → core::bool};
#t114.{core::Set::add}{Invariant}(null){(core::List<core::int>?) → core::bool};
@@ -1241,7 +1241,7 @@ static method testForElement(dynamic dynVar, core::List<core::int> listInt, core
#t116.{core::List::addAll}{Invariant}(core::_GrowableList::_literal1<core::int>(42)){(core::Iterable<core::int>) → void};
} =>#t116;
core::Set<core::int?> set20 = block {
final core::Set<core::int?> #t117 = new col::_Set::•<core::int?>();
final core::Set<core::int?> #t117 = new _co::_Set::•<core::int?>();
for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
#t117.{core::Set::addAll}{Invariant}(core::_GrowableList::_literal1<core::int>(42)){(core::Iterable<core::int?>) → void};
#t117.{core::Set::add}{Invariant}(null){(core::int?) → core::bool};
@@ -1258,7 +1258,7 @@ static method testForElement(dynamic dynVar, core::List<core::int> listInt, core
#t119.{core::List::addAll}{Invariant}(core::_GrowableList::_literal1<dynamic>(dynVar)){(core::Iterable<dynamic>) → void};
} =>#t119;
core::Set<dynamic> set21 = block {
final core::Set<dynamic> #t120 = new col::_Set::•<dynamic>();
final core::Set<dynamic> #t120 = new _co::_Set::•<dynamic>();
for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
#t120.{core::Set::addAll}{Invariant}(core::_GrowableList::_literal1<dynamic>(dynVar)){(core::Iterable<dynamic>) → void};
#t120.{core::Set::add}{Invariant}(null){(dynamic) → core::bool};
@@ -1275,7 +1275,7 @@ static method testForElement(dynamic dynVar, core::List<core::int> listInt, core
#t122.{core::List::addAll}{Invariant}(core::_GrowableList::_literal1<core::List<core::int>>(core::_GrowableList::_literal1<core::int>(42))){(core::Iterable<core::List<core::int>>) → void};
} =>#t122;
core::Set<core::List<core::int>?> set22 = block {
final core::Set<core::List<core::int>?> #t123 = new col::_Set::•<core::List<core::int>?>();
final core::Set<core::List<core::int>?> #t123 = new _co::_Set::•<core::List<core::int>?>();
for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
#t123.{core::Set::addAll}{Invariant}(core::_GrowableList::_literal1<core::List<core::int>>(core::_GrowableList::_literal1<core::int>(42))){(core::Iterable<core::List<core::int>?>) → void};
#t123.{core::Set::add}{Invariant}(null){(core::List<core::int>?) → core::bool};
@@ -1293,7 +1293,7 @@ static method testForElement(dynamic dynVar, core::List<core::int> listInt, core
#t125.{core::List::addAll}{Invariant}(core::_GrowableList::_literal1<core::int>(42)){(core::Iterable<core::int>) → void};
} =>#t125;
core::Set<core::int?> set30 = block {
final core::Set<core::int?> #t126 = new col::_Set::•<core::int?>();
final core::Set<core::int?> #t126 = new _co::_Set::•<core::int?>();
for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool)
#t126.{core::Set::addAll}{Invariant}(core::_GrowableList::_literal1<core::int>(42)){(core::Iterable<core::int?>) → void};
@@ -1313,7 +1313,7 @@ static method testForElement(dynamic dynVar, core::List<core::int> listInt, core
#t128.{core::List::addAll}{Invariant}(core::_GrowableList::_literal1<dynamic>(dynVar)){(core::Iterable<dynamic>) → void};
} =>#t128;
core::Set<dynamic> set31 = block {
final core::Set<dynamic> #t129 = new col::_Set::•<dynamic>();
final core::Set<dynamic> #t129 = new _co::_Set::•<dynamic>();
for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool)
#t129.{core::Set::addAll}{Invariant}(core::_GrowableList::_literal1<dynamic>(dynVar)){(core::Iterable<dynamic>) → void};
@@ -1333,7 +1333,7 @@ static method testForElement(dynamic dynVar, core::List<core::int> listInt, core
#t131.{core::List::addAll}{Invariant}(core::_GrowableList::_literal1<core::List<core::int>>(core::_GrowableList::_literal1<core::int>(42))){(core::Iterable<core::List<core::int>>) → void};
} =>#t131;
core::Set<core::List<core::int>?> set33 = block {
final core::Set<core::List<core::int>?> #t132 = new col::_Set::•<core::List<core::int>?>();
final core::Set<core::List<core::int>?> #t132 = new _co::_Set::•<core::List<core::int>?>();
for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool)
#t132.{core::Set::addAll}{Invariant}(core::_GrowableList::_literal1<core::List<core::int>>(core::_GrowableList::_literal1<core::int>(42))){(core::Iterable<core::List<core::int>?>) → void};
@@ -1352,7 +1352,7 @@ static method testForElement(dynamic dynVar, core::List<core::int> listInt, core
#t134.{core::List::addAll}{Invariant}(core::_GrowableList::_literal1<core::List<core::int>>(core::_GrowableList::•<core::int>(0))){(core::Iterable<core::List<core::int>>) → void};
} =>#t134;
core::Set<core::List<core::int>?> set40 = block {
final core::Set<core::List<core::int>?> #t135 = new col::_Set::•<core::List<core::int>?>();
final core::Set<core::List<core::int>?> #t135 = new _co::_Set::•<core::List<core::int>?>();
for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
#t135.{core::Set::addAll}{Invariant}(core::_GrowableList::_literal1<core::List<core::int>?>(core::_GrowableList::•<core::int>(0))){(core::Iterable<core::List<core::int>?>) → void};
#t135.{core::Set::add}{Invariant}(null){(core::List<core::int>?) → core::bool};
@@ -1367,15 +1367,15 @@ static method testForElement(dynamic dynVar, core::List<core::int> listInt, core
final core::List<core::List<core::int>> #t137 = core::_GrowableList::•<core::List<core::int>>(0);
for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
#t137.{core::List::addAll}{Invariant}( block {
final core::Set<core::List<core::int>> #t138 = new col::_Set::•<core::List<core::int>>();
final core::Set<core::List<core::int>> #t138 = new _co::_Set::•<core::List<core::int>>();
#t138.{core::Set::add}{Invariant}(core::_GrowableList::•<core::int>(0)){(core::List<core::int>) → core::bool};
} =>#t138){(core::Iterable<core::List<core::int>>) → void};
} =>#t137;
core::Set<core::List<core::int>?> set41 = block {
final core::Set<core::List<core::int>?> #t139 = new col::_Set::•<core::List<core::int>?>();
final core::Set<core::List<core::int>?> #t139 = new _co::_Set::•<core::List<core::int>?>();
for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
#t139.{core::Set::addAll}{Invariant}( block {
final core::Set<core::List<core::int>?> #t140 = new col::_Set::•<core::List<core::int>?>();
final core::Set<core::List<core::int>?> #t140 = new _co::_Set::•<core::List<core::int>?>();
#t140.{core::Set::add}{Invariant}(core::_GrowableList::•<core::int>(0)){(core::List<core::int>?) → core::bool};
} =>#t140){(core::Iterable<core::List<core::int>?>) → void};
#t139.{core::Set::add}{Invariant}(null){(core::List<core::int>?) → core::bool};
@@ -1387,7 +1387,7 @@ static method testForElement(dynamic dynVar, core::List<core::int> listInt, core
#t141.{core::List::addAll}{Invariant}(core::_GrowableList::_literal1<core::List<core::int>>(core::_GrowableList::•<core::int>(0))){(core::Iterable<core::List<core::int>>) → void};
} =>#t141;
core::Set<core::List<core::int>?> set42 = block {
final core::Set<core::List<core::int>?> #t142 = new col::_Set::•<core::List<core::int>?>();
final core::Set<core::List<core::int>?> #t142 = new _co::_Set::•<core::List<core::int>?>();
for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool)
#t142.{core::Set::addAll}{Invariant}(core::_GrowableList::_literal1<core::List<core::int>?>(core::_GrowableList::•<core::int>(0))){(core::Iterable<core::List<core::int>?>) → void};
@@ -1406,7 +1406,7 @@ static method testForElement(dynamic dynVar, core::List<core::int> listInt, core
#t144.{core::List::addAll}{Invariant}(core::_GrowableList::•<core::int>(0)){(core::Iterable<core::int>) → void};
} =>#t144;
core::Set<core::int?> set50 = block {
final core::Set<core::int?> #t145 = new col::_Set::•<core::int?>();
final core::Set<core::int?> #t145 = new _co::_Set::•<core::int?>();
for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
#t145.{core::Set::addAll}{Invariant}(core::_GrowableList::•<core::int?>(0)){(core::Iterable<core::int?>) → void};
#t145.{core::Set::add}{Invariant}(null){(core::int?) → core::bool};
@@ -1421,14 +1421,14 @@ static method testForElement(dynamic dynVar, core::List<core::int> listInt, core
final core::List<core::int> #t147 = core::_GrowableList::•<core::int>(0);
for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
#t147.{core::List::addAll}{Invariant}( block {
final core::Set<core::int> #t148 = new col::_Set::•<core::int>();
final core::Set<core::int> #t148 = new _co::_Set::•<core::int>();
} =>#t148){(core::Iterable<core::int>) → void};
} =>#t147;
core::Set<core::int?> set51 = block {
final core::Set<core::int?> #t149 = new col::_Set::•<core::int?>();
final core::Set<core::int?> #t149 = new _co::_Set::•<core::int?>();
for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
#t149.{core::Set::addAll}{Invariant}( block {
final core::Set<core::int?> #t150 = new col::_Set::•<core::int?>();
final core::Set<core::int?> #t150 = new _co::_Set::•<core::int?>();
} =>#t150){(core::Iterable<core::int?>) → void};
#t149.{core::Set::add}{Invariant}(null){(core::int?) → core::bool};
} =>#t149;
@@ -1439,7 +1439,7 @@ static method testForElement(dynamic dynVar, core::List<core::int> listInt, core
#t151.{core::List::addAll}{Invariant}(core::_GrowableList::•<core::int>(0)){(core::Iterable<core::int>) → void};
} =>#t151;
core::Set<core::int?> set52 = block {
final core::Set<core::int?> #t152 = new col::_Set::•<core::int?>();
final core::Set<core::int?> #t152 = new _co::_Set::•<core::int?>();
for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool)
#t152.{core::Set::addAll}{Invariant}(core::_GrowableList::•<core::int?>(0)){(core::Iterable<core::int?>) → void};
@@ -1451,7 +1451,7 @@ static method testForElement(dynamic dynVar, core::List<core::int> listInt, core
#t153.{core::List::addAll}{Invariant}(core::_GrowableList::_literal1<core::List<core::int>>(core::_GrowableList::•<core::int>(0))){(core::Iterable<core::List<core::int>>) → void};
} =>#t153;
core::Set<core::List<core::int>?> set60 = block {
final core::Set<core::List<core::int>?> #t154 = new col::_Set::•<core::List<core::int>?>();
final core::Set<core::List<core::int>?> #t154 = new _co::_Set::•<core::List<core::int>?>();
for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
#t154.{core::Set::addAll}{Invariant}(core::_GrowableList::_literal1<core::List<core::int>?>(core::_GrowableList::•<core::int>(0))){(core::Iterable<core::List<core::int>?>) → void};
#t154.{core::Set::add}{Invariant}(null){(core::List<core::int>?) → core::bool};
@@ -1469,7 +1469,7 @@ static method testForElement(dynamic dynVar, core::List<core::int> listInt, core
#t156.{core::List::addAll}{Invariant}(core::_GrowableList::_literal1<core::List<core::int>>(core::_GrowableList::•<core::int>(0))){(core::Iterable<core::List<core::int>>) → void};
} =>#t156;
core::Set<core::List<core::int>?> set61 = block {
final core::Set<core::List<core::int>?> #t157 = new col::_Set::•<core::List<core::int>?>();
final core::Set<core::List<core::int>?> #t157 = new _co::_Set::•<core::List<core::int>?>();
for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool)
#t157.{core::Set::addAll}{Invariant}(core::_GrowableList::_literal1<core::List<core::int>?>(core::_GrowableList::•<core::int>(0))){(core::Iterable<core::List<core::int>?>) → void};
@@ -1488,7 +1488,7 @@ static method testForElement(dynamic dynVar, core::List<core::int> listInt, core
#t159.{core::List::add}{Invariant}(core::_GrowableList::•<core::int>(0)){(core::List<core::int>) → void};
} =>#t159;
core::Set<core::List<core::int>?> set70 = block {
final core::Set<core::List<core::int>?> #t160 = new col::_Set::•<core::List<core::int>?>();
final core::Set<core::List<core::int>?> #t160 = new _co::_Set::•<core::List<core::int>?>();
for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
#t160.{core::Set::add}{Invariant}(core::_GrowableList::•<core::int>(0)){(core::List<core::int>?) → core::bool};
#t160.{core::Set::add}{Invariant}(null){(core::List<core::int>?) → core::bool};
@@ -1506,7 +1506,7 @@ static method testForElement(dynamic dynVar, core::List<core::int> listInt, core
#t162.{core::List::add}{Invariant}(core::_GrowableList::•<core::int>(0)){(core::List<core::int>) → void};
} =>#t162;
core::Set<core::List<core::int>?> set71 = block {
final core::Set<core::List<core::int>?> #t163 = new col::_Set::•<core::List<core::int>?>();
final core::Set<core::List<core::int>?> #t163 = new _co::_Set::•<core::List<core::int>?>();
for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool)
#t163.{core::Set::add}{Invariant}(core::_GrowableList::•<core::int>(0)){(core::List<core::int>?) → core::bool};
@@ -1528,7 +1528,7 @@ static method testForElement(dynamic dynVar, core::List<core::int> listInt, core
#t165.{core::List::add}{Invariant}(3.14){(core::num) → void};
} =>#t165;
core::Set<core::num?> set80 = block {
final core::Set<core::num?> #t166 = new col::_Set::•<core::num?>();
final core::Set<core::num?> #t166 = new _co::_Set::•<core::num?>();
for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool)
#t166.{core::Set::add}{Invariant}(42){(core::num?) → core::bool};
@@ -1554,7 +1554,7 @@ static method testForElement(dynamic dynVar, core::List<core::int> listInt, core
#t168.{core::List::addAll}{Invariant}(listDouble){(core::Iterable<core::num>) → void};
} =>#t168;
core::Set<core::num?> set81 = block {
final core::Set<core::num?> #t169 = new col::_Set::•<core::num?>();
final core::Set<core::num?> #t169 = new _co::_Set::•<core::num?>();
for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool)
#t169.{core::Set::addAll}{Invariant}(listInt){(core::Iterable<core::num?>) → void};
@@ -1580,7 +1580,7 @@ static method testForElement(dynamic dynVar, core::List<core::int> listInt, core
#t171.{core::List::addAll}{Invariant}(dynVar as{TypeError,ForDynamic} core::Iterable<dynamic>){(core::Iterable<dynamic>) → void};
} =>#t171;
core::Set<dynamic> set82 = block {
final core::Set<dynamic> #t172 = new col::_Set::•<dynamic>();
final core::Set<dynamic> #t172 = new _co::_Set::•<dynamic>();
for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool)
#t172.{core::Set::addAll}{Invariant}(listInt){(core::Iterable<dynamic>) → void};
@@ -1606,7 +1606,7 @@ static method testForElement(dynamic dynVar, core::List<core::int> listInt, core
#t174.{core::List::addAll}{Invariant}(listDouble){(core::Iterable<core::num>) → void};
} =>#t174;
core::Set<core::num?> set83 = block {
final core::Set<core::num?> #t175 = new col::_Set::•<core::num?>();
final core::Set<core::num?> #t175 = new _co::_Set::•<core::num?>();
for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool)
#t175.{core::Set::addAll}{Invariant}(listInt){(core::Iterable<core::num?>) → void};
@@ -1629,7 +1629,7 @@ static method testForElement(dynamic dynVar, core::List<core::int> listInt, core
#t177.{core::List::add}{Invariant}(dynVar as{TypeError,ForDynamic} core::int){(core::int) → void};
} =>#t177;
core::Set<core::int?> set90 = block {
final core::Set<core::int?> #t178 = new col::_Set::•<core::int?>();
final core::Set<core::int?> #t178 = new _co::_Set::•<core::int?>();
for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
#t178.{core::Set::add}{Invariant}(dynVar as{TypeError,ForDynamic} core::int?){(core::int?) → core::bool};
#t178.{core::Set::add}{Invariant}(null){(core::int?) → core::bool};
@@ -1654,7 +1654,7 @@ static method testForElement(dynamic dynVar, core::List<core::int> listInt, core
}
} =>#t180;
core::Set<core::int?> set91 = block {
final core::Set<core::int?> #t183 = new col::_Set::•<core::int?>();
final core::Set<core::int?> #t183 = new _co::_Set::•<core::int?>();
for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool; i = i.{core::num::+}(1){(core::num) → core::int}) {
synthesized core::Iterator<dynamic> :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Iterable<dynamic>).{core::Iterable::iterator}{core::Iterator<dynamic>};
for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
@@ -1688,7 +1688,7 @@ static method testForElement(dynamic dynVar, core::List<core::int> listInt, core
#t190.{core::List::add}{Invariant}(42){(core::int) → void};
} =>#t190;
core::Set<core::int> set100 = block {
final core::Set<core::int> #t192 = new col::_Set::•<core::int>();
final core::Set<core::int> #t192 = new _co::_Set::•<core::int>();
for (final core::int #t193 = index = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool; index = index.{core::num::+}(1){(core::num) → core::int})
#t192.{core::Set::add}{Invariant}(42){(core::int) → core::bool};
} =>#t192;
@@ -1708,7 +1708,7 @@ static method testForElement(dynamic dynVar, core::List<core::int> listInt, core
}
} =>#t196;
core::Set<core::int?> set110 = block {
final core::Set<core::int?> #t197 = new col::_Set::•<core::int?>();
final core::Set<core::int?> #t197 = new _co::_Set::•<core::int?>();
{
synthesized core::Iterator<core::int> :sync-for-iterator = core::_GrowableList::_literal3<core::int>(1, 2, 3).{core::Iterable::iterator}{core::Iterator<core::int>};
for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
@@ -1740,7 +1740,7 @@ static method testForElement(dynamic dynVar, core::List<core::int> listInt, core
}
} =>#t199;
core::Set<core::int?> set120 = block {
final core::Set<core::int?> #t200 = new col::_Set::•<core::int?>();
final core::Set<core::int?> #t200 = new _co::_Set::•<core::int?>();
{
synthesized core::Iterator<dynamic> :sync-for-iterator = (dynVar as{TypeError,ForDynamic} core::Iterable<dynamic>).{core::Iterable::iterator}{core::Iterator<dynamic>};
for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
@@ -1767,7 +1767,7 @@ static method testForElement(dynamic dynVar, core::List<core::int> listInt, core
#t202.{core::List::add}{Invariant}(i){(core::int) → void};
} =>#t202;
core::Set<core::int> set130 = block {
final core::Set<core::int> #t203 = new col::_Set::•<core::int>();
final core::Set<core::int> #t203 = new _co::_Set::•<core::int>();
for (core::int i = 1; i.{core::num::<}(2){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int})
#t203.{core::Set::add}{Invariant}(i){(core::int) → core::bool};
} =>#t203;
@@ -1786,7 +1786,7 @@ static method testForElementErrors(core::Map<core::int, core::int> map, core::Li
^" in "bar" as{TypeError} core::int){(core::int) → void};
}
{
final core::Set<core::int?> #t206 = new col::_Set::•<core::int?>();
final core::Set<core::int?> #t206 = new _co::_Set::•<core::int?>();
for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
#t206.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:211:46: Error: A value of type 'String' can't be assigned to a variable of type 'int?'.
<int?>{for (int i = 0; oracle(\"foo\"); i++) \"bar\", null};
@@ -1813,7 +1813,7 @@ static method testForElementErrors(core::Map<core::int, core::int> map, core::Li
^" in "bar" as{TypeError} core::int)){(core::Iterable<core::int>) → void};
}
{
final core::Set<core::int?> #t209 = new col::_Set::•<core::int?>();
final core::Set<core::int?> #t209 = new _co::_Set::•<core::int?>();
for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
#t209.{core::Set::addAll}{Invariant}(core::_GrowableList::_literal1<core::int?>(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:214:50: Error: A value of type 'String' can't be assigned to a variable of type 'int?'.
<int?>{for (int i = 0; oracle(\"foo\"); i++) ...[\"bar\"], null};
@@ -1841,7 +1841,7 @@ static method testForElementErrors(core::Map<core::int, core::int> map, core::Li
^"){(core::int) → void};
}
{
final core::Set<core::int?> #t212 = new col::_Set::•<core::int?>();
final core::Set<core::int?> #t212 = new _co::_Set::•<core::int?>();
for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
#t212.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:217:49: Error: Unexpected type 'Map<int, int>' of a spread. Expected 'dynamic' or an Iterable.
- 'Map' is from 'dart:core'.
@@ -1869,7 +1869,7 @@ static method testForElementErrors(core::Map<core::int, core::int> map, core::Li
^" in 3.14 as{TypeError} core::String){(core::String) → void};
}
{
final core::Set<core::String?> #t214 = new col::_Set::•<core::String?>();
final core::Set<core::String?> #t214 = new _co::_Set::•<core::String?>();
for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool)
#t214.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:220:63: Error: A value of type 'int' can't be assigned to a variable of type 'String?'.
@@ -1906,7 +1906,7 @@ static method testForElementErrors(core::Map<core::int, core::int> map, core::Li
#t216.{core::List::add}{Invariant}(42){(core::int) → void};
}
{
final core::Set<core::int?> #t217 = new col::_Set::•<core::int?>();
final core::Set<core::int?> #t217 = new _co::_Set::•<core::int?>();
for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool)
#t217.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:223:63: Error: Unexpected type 'Map<int, int>' of a spread. Expected 'dynamic' or an Iterable.
@@ -1936,7 +1936,7 @@ static method testForElementErrors(core::Map<core::int, core::int> map, core::Li
^"){(core::int) → void};
}
{
final core::Set<core::int?> #t219 = new col::_Set::•<core::int?>();
final core::Set<core::int?> #t219 = new _co::_Set::•<core::int?>();
for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool)
#t219.{core::Set::add}{Invariant}(42){(core::int?) → core::bool};
@@ -1971,7 +1971,7 @@ static method testForElementErrors(core::Map<core::int, core::int> map, core::Li
}
}
{
final core::Set<core::int?> #t222 = new col::_Set::•<core::int?>();
final core::Set<core::int?> #t222 = new _co::_Set::•<core::int?>();
{
synthesized core::Iterator<core::int> :sync-for-iterator = core::_GrowableList::_literal1<core::int>(1).{core::Iterable::iterator}{core::Iterator<core::int>};
for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
@@ -2016,7 +2016,7 @@ static method testForElementErrors(core::Map<core::int, core::int> map, core::Li
}
} =>#t226;
core::Set<dynamic> set10 = block {
final core::Set<dynamic> #t227 = new col::_Set::•<dynamic>();
final core::Set<dynamic> #t227 = new _co::_Set::•<dynamic>();
{
synthesized core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:235:30: Error: The type 'String' used in the 'for' loop must implement 'Iterable<dynamic>'.
- 'Iterable' is from 'dart:core'.
@@ -2058,7 +2058,7 @@ static method testForElementErrors(core::Map<core::int, core::int> map, core::Li
}
} =>#t229;
core::Set<core::int?> set20 = block {
final core::Set<core::int?> #t230 = new col::_Set::•<core::int?>();
final core::Set<core::int?> #t230 = new _co::_Set::•<core::int?>();
{
synthesized core::Iterator<core::int> :sync-for-iterator = core::_GrowableList::_literal2<core::int>(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:238:31: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
var set20 = {for (int i in [\"not\", \"int\"]) i, null};
@@ -2106,7 +2106,7 @@ static method testForElementErrors(core::Map<core::int, core::int> map, core::Li
}
} =>#t232;
core::Set<dynamic> set30 = block {
final core::Set<dynamic> #t234 = new col::_Set::•<dynamic>();
final core::Set<dynamic> #t234 = new _co::_Set::•<dynamic>();
{
synthesized Never :stream = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:241:36: Error: The type 'String' used in the 'for' loop must implement 'Stream<dynamic>'.
- 'Stream' is from 'dart:async'.
@@ -2163,7 +2163,7 @@ static method testForElementErrors(core::Map<core::int, core::int> map, core::Li
}
} =>#t238;
core::Set<core::int?> set40 = block {
final core::Set<core::int?> #t240 = new col::_Set::•<core::int?>();
final core::Set<core::int?> #t240 = new _co::_Set::•<core::int?>();
{
synthesized asy::Stream<core::int> :stream = asy::Stream::fromIterable<core::int>(core::_GrowableList::_literal2<core::int>(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:244:57: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
var set40 = {await for (int i in Stream.fromIterable([\"not\", \"int\"])) i, null};
@@ -2208,7 +2208,7 @@ static method testForElementErrors(core::Map<core::int, core::int> map, core::Li
#t244.{core::List::add}{Invariant}(42){(core::int) → void};
} =>#t244;
core::Set<core::int?> set50 = block {
final core::Set<core::int?> #t245 = new col::_Set::•<core::int?>();
final core::Set<core::int?> #t245 = new _co::_Set::•<core::int?>();
for (; ; )
#t245.{core::Set::add}{Invariant}(42){(core::int?) → core::bool};
#t245.{core::Set::add}{Invariant}(null){(core::int?) → core::bool};
@@ -2227,7 +2227,7 @@ static method testForElementErrors(core::Map<core::int, core::int> map, core::Li
#t247.{core::List::add}{Invariant}(42){(core::int) → void};
} =>#t247;
core::Set<core::int?> set60 = block {
final core::Set<core::int?> #t248 = new col::_Set::•<core::int?>();
final core::Set<core::int?> #t248 = new _co::_Set::•<core::int?>();
for (; invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:250:23: Error: A value of type 'String' can't be assigned to a variable of type 'bool'.
var set60 = {for (; \"not bool\";) 42, null};
^" in "not bool" as{TypeError} core::bool; )
@@ -2250,7 +2250,7 @@ static method testForElementErrorsNotAsync(asy::Stream<core::int> stream) → dy
#t250.{core::List::add}{Invariant}(i){(core::int) → void};
}
{
final core::Set<core::int> #t251 = new col::_Set::•<core::int>();
final core::Set<core::int> #t251 = new _co::_Set::•<core::int>();
await for (core::int i in stream)
#t251.{core::Set::add}{Invariant}(i){(core::int) → core::bool};
}
@@ -2267,7 +2267,7 @@ static method testPromotion(self::A a) → dynamic {
#t253.{core::List::add}{Invariant}(a{self::B}.{self::B::foo}{core::int}){(core::int) → void};
} =>#t253;
core::Set<core::int> set10 = block {
final core::Set<core::int> #t254 = new col::_Set::•<core::int>();
final core::Set<core::int> #t254 = new _co::_Set::•<core::int>();
if(a is self::B)
#t254.{core::Set::add}{Invariant}(a{self::B}.{self::B::foo}{core::int}){(core::int) → core::bool};
} =>#t254;
@@ -1,13 +1,13 @@
library;
import self as self;
import "dart:core" as core;
import "dart:collection" as col;
import "dart:_compact_hash" as _co;
static method main() → dynamic {
core::Object? a;
core::Object? b;
return block {
final core::Set<core::Object?> #t1 = new col::_Set::•<core::Object?>();
final core::Set<core::Object?> #t1 = new _co::_Set::•<core::Object?>();
#t1.{core::Set::add}{Invariant}(let final core::Object? #t2 = a in #t2 == null ?{core::Object?} b : #t2{core::Object}){(core::Object?) → core::bool};
} =>#t1;
}
@@ -29,7 +29,7 @@ library;
//
import self as self;
import "dart:core" as core;
import "dart:collection" as col;
import "dart:_compact_hash" as _co;
typedef F = <T extends core::Object? = dynamic>() → void;
static method method<T extends core::Object? = dynamic>() → self::method::T%
@@ -38,7 +38,7 @@ static method test(<T extends core::Object? = dynamic>() → void f) → dynamic
f = self::method<<T extends core::Object? = dynamic>() → void>();
core::List<<T extends core::Object? = dynamic>() → void> list = core::_GrowableList::_literal1<<T extends core::Object? = dynamic>() → void>(f);
core::Set<<T extends core::Object? = dynamic>() → void> set = block {
final core::Set<<T extends core::Object? = dynamic>() → void> #t1 = new col::_Set::•<<T extends core::Object? = dynamic>() → void>();
final core::Set<<T extends core::Object? = dynamic>() → void> #t1 = new _co::_Set::•<<T extends core::Object? = dynamic>() → void>();
#t1.{core::Set::add}{Invariant}(f){(<T extends core::Object? = dynamic>() → void) → core::bool};
} =>#t1;
core::Map<<T extends core::Object? = dynamic>() → void, core::int> map1 = <<T extends core::Object? = dynamic>() → void, core::int>{f: 1};
@@ -1,13 +1,13 @@
library;
import self as self;
import "dart:core" as core;
import "dart:collection" as col;
import "dart:_compact_hash" as _co;
class C extends core::Object {
final field core::Set<core::int> s;
constructor •(core::List<core::int> ell) → self::C
: self::C::s = block {
final core::Set<core::int> #t1 = new col::_Set::•<core::int>();
final core::Set<core::int> #t1 = new _co::_Set::•<core::int>();
{
synthesized core::Iterator<core::int> :sync-for-iterator = ell.{core::Iterable::iterator}{core::Iterator<core::int>};
for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
@@ -1,7 +1,7 @@
library;
import self as self;
import "dart:core" as core;
import "dart:collection" as col;
import "dart:_compact_hash" as _co;
static method nullAwareListSpread(core::List<core::String>? list) → dynamic {
list = block {
@@ -13,7 +13,7 @@ static method nullAwareListSpread(core::List<core::String>? list) → dynamic {
}
static method nullAwareSetSpread(core::Set<core::String>? set) → dynamic {
set = block {
final core::Set<core::String> #t3 = new col::_Set::•<core::String>();
final core::Set<core::String> #t3 = new _co::_Set::•<core::String>();
#t3.{core::Set::add}{Invariant}("foo"){(core::String) → core::bool};
final core::Iterable<core::String>? #t4 = set;
if(!(#t4 == null))
@@ -1,7 +1,7 @@
library;
import self as self;
import "dart:core" as core;
import "dart:collection" as col;
import "dart:_compact_hash" as _co;
class Element extends core::Object {
synthetic constructor •() → self::Element
@@ -16,7 +16,7 @@ class Class<E extends self::Element?> extends core::Object {
method setElement(covariant-by-class self::Class::E? element) → void {
if(!(this.{self::Class::element}{self::Class::E?} =={core::Object::==}{(core::Object) → core::bool} element)) {
this.{self::Class::element} = element;
core::Set<self::Element> elements = new col::_Set::•<self::Element>();
core::Set<self::Element> elements = new _co::_Set::•<self::Element>();
if(!(element == null)) {
elements.{core::Set::add}(element{self::Class::E% & self::Element /* '%' & '!' = '!' */}){(self::Element) → core::bool};
}
@@ -9,7 +9,7 @@ library;
//
import self as self;
import "dart:core" as core;
import "dart:collection" as col;
import "dart:_compact_hash" as _co;
static field core::List<core::int>? nullableList = core::_GrowableList::_literal1<core::int>(3);
static field core::Map<core::int, core::int>? nullableMap = <core::int, core::int>{3: 3};
@@ -30,7 +30,7 @@ static method main() → dynamic {
#t3.{core::Map::addAll}{Invariant}(#t4{core::Map<core::int, core::int>}){(core::Map<core::int, core::int>) → void};
} =>#t3;
final core::Set<core::int> aSet = block {
final core::Set<core::int> #t5 = new col::_Set::•<core::int>();
final core::Set<core::int> #t5 = new _co::_Set::•<core::int>();
#t5.{core::Set::add}{Invariant}(1){(core::int) → core::bool};
#t5.{core::Set::addAll}{Invariant}(core::_GrowableList::_literal1<core::int>(2)){(core::Iterable<core::int>) → void};
final core::Iterable<core::int>? #t6 = self::nullableList;
@@ -111,6 +111,7 @@ library;
import self as self;
import "dart:core" as core;
import "dart:collection" as col;
import "dart:_compact_hash" as _co;
static method bar<K extends core::Object? = dynamic, V extends core::Object? = dynamic>() → core::Map<self::bar::K%, self::bar::V%>
return throw "";
@@ -230,7 +231,7 @@ Try providing type arguments for the literal explicitly to disambiguate it.
List<dynamic> lhs40 = <dynamic>[...notSpreadInt];
^");
core::Set<dynamic> set40 = block {
final core::Set<dynamic> #t26 = new col::_Set::•<dynamic>();
final core::Set<dynamic> #t26 = new _co::_Set::•<dynamic>();
#t26.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:109:37: Error: Unexpected type 'int' of a spread. Expected 'dynamic' or an Iterable.
Set<dynamic> set40 = <dynamic>{...notSpreadInt};
^"){(dynamic) → core::bool};
@@ -242,7 +243,7 @@ Try providing type arguments for the literal explicitly to disambiguate it.
List<dynamic> lhs50 = <dynamic>[...notSpreadFunction];
^");
core::Set<dynamic> set50 = block {
final core::Set<dynamic> #t27 = new col::_Set::•<dynamic>();
final core::Set<dynamic> #t27 = new _co::_Set::•<dynamic>();
#t27.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:115:37: Error: Unexpected type 'int Function()?' of a spread. Expected 'dynamic' or an Iterable.
Set<dynamic> set50 = <dynamic>{...notSpreadFunction};
^"){(dynamic) → core::bool};
@@ -254,7 +255,7 @@ Try providing type arguments for the literal explicitly to disambiguate it.
List<String> lhs60 = <String>[...spread];
^");
core::Set<core::String> set60 = block {
final core::Set<core::String> #t28 = new col::_Set::•<core::String>();
final core::Set<core::String> #t28 = new _co::_Set::•<core::String>();
#t28.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:121:35: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
Set<String> set60 = <String>{...spread};
^"){(core::String) → core::bool};
@@ -269,13 +270,13 @@ Try providing type arguments for the literal explicitly to disambiguate it.
List<int> lhs70 = <int>[...null];
^");
core::Set<core::int> set70 = block {
final core::Set<core::int> #t29 = new col::_Set::•<core::int>();
final core::Set<core::int> #t29 = new _co::_Set::•<core::int>();
#t29.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:129:29: Error: Can't spread a value with static type 'Null'.
Set<int> set70 = <int>{...null};
^"){(core::int) → core::bool};
} =>#t29;
core::Set<dynamic> set71ambiguous = block {
final core::Set<dynamic> #t30 = new col::_Set::•<dynamic>();
final core::Set<dynamic> #t30 = new _co::_Set::•<dynamic>();
#t30.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:133:8: Error: Can't spread a value with static type 'Null'.
...null,
^"){(dynamic) → core::bool};
@@ -291,13 +292,13 @@ Try providing type arguments for the literal explicitly to disambiguate it.
#t31.{core::List::addAll}{Invariant}(#t32{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
} =>#t31;
core::Set<core::int> set80 = block {
final core::Set<core::int> #t33 = new col::_Set::•<core::int>();
final core::Set<core::int> #t33 = new _co::_Set::•<core::int>();
final has-declared-initializer core::Iterable<core::int>? #t34 = null;
if(!(#t34 == null))
#t33.{core::Set::addAll}{Invariant}(#t34{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
} =>#t33;
core::Set<dynamic> set81ambiguous = block {
final core::Set<dynamic> #t35 = new col::_Set::•<dynamic>();
final core::Set<dynamic> #t35 = new _co::_Set::•<dynamic>();
final has-declared-initializer core::Iterable<dynamic>? #t36 = null;
if(!(#t36 == null))
#t35.{core::Set::addAll}{Invariant}(#t36{core::Iterable<dynamic>}){(core::Iterable<dynamic>) → void};
@@ -8,10 +8,10 @@ library;
//
import self as self;
import "dart:core" as core;
import "dart:collection" as col;
import "dart:_compact_hash" as _co;
static field core::Set<core::int> a = block {
final core::Set<core::int> #t1 = new col::_Set::•<core::int>();
final core::Set<core::int> #t1 = new _co::_Set::•<core::int>();
#t1.{core::Set::add}{Invariant}(0){(core::int) → core::bool};
} =>#t1;
static field core::Map<core::int, core::int> b = <core::int, core::int>{0: 1};
@@ -1,7 +1,7 @@
library;
import self as self;
import "dart:core" as core;
import "dart:collection" as col;
import "dart:_compact_hash" as _co;
class A<X extends core::Object? = dynamic> extends core::Object {
synthetic constructor •() → self::A<self::A::X%>
@@ -14,7 +14,7 @@ static method test() → dynamic {
self::A<<Z extends core::Object? = dynamic>(dynamic) → Never> x = self::foo<<Z extends core::Object? = dynamic>(dynamic) → Never>(<Z extends core::Object? = dynamic>(dynamic Z) → Never => throw 42);
core::List<<Y extends core::Object? = dynamic>(Y%) → self::A<Y%>> y = core::_GrowableList::_literal1<<Y extends core::Object? = dynamic>(Y%) → self::A<Y%>>(#C1);
core::Set<<Y extends core::Object? = dynamic>(Y%) → self::A<Y%>> z = block {
final core::Set<<Y extends core::Object? = dynamic>(Y%) → self::A<Y%>> #t1 = new col::_Set::•<<Y extends core::Object? = dynamic>(Y%) → self::A<Y%>>();
final core::Set<<Y extends core::Object? = dynamic>(Y%) → self::A<Y%>> #t1 = new _co::_Set::•<<Y extends core::Object? = dynamic>(Y%) → self::A<Y%>>();
#t1.{core::Set::add}{Invariant}(y.{core::Iterable::first}{<Y extends core::Object? = dynamic>(Y%) → self::A<Y%>}){(<Y extends core::Object? = dynamic>(Y%) → self::A<Y%>) → core::bool};
} =>#t1;
}
@@ -7,10 +7,11 @@ library from "org-dartlang-test:///main.dart" as main {
static method foo() → dynamic {}
}
And 19 platform libraries:
And 20 platform libraries:
- dart:_http
- dart:_builtin
- dart:vmservice_io
- dart:_compact_hash
- dart:async
- dart:cli
- dart:collection
@@ -14,10 +14,11 @@ library from "org-dartlang-test:///main.dart" as main {
static method foo() → dynamic {}
}
And 19 platform libraries:
And 20 platform libraries:
- dart:_http
- dart:_builtin
- dart:vmservice_io
- dart:_compact_hash
- dart:async
- dart:cli
- dart:collection
@@ -26,8 +26,9 @@ library from "org-dartlang-test:///main.dart" as main {
}
}
And 18 platform libraries:
And 19 platform libraries:
- dart:_builtin
- dart:_compact_hash
- dart:_internal
- dart:_vmservice
- dart:async
@@ -8,10 +8,11 @@ library from "org-dartlang-test:///main.dart" as main {
return 42;
}
And 19 platform libraries:
And 20 platform libraries:
- dart:_http
- dart:_builtin
- dart:vmservice_io
- dart:_compact_hash
- dart:async
- dart:cli
- dart:collection
@@ -8,10 +8,11 @@ library from "org-dartlang-test:///main.dart" as main {
return 42;
}
And 19 platform libraries:
And 20 platform libraries:
- dart:_http
- dart:_builtin
- dart:vmservice_io
- dart:_compact_hash
- dart:async
- dart:cli
- dart:collection
@@ -16,10 +16,11 @@ library from "org-dartlang-test:///main.dart" as main {
}
}
And 19 platform libraries:
And 20 platform libraries:
- dart:_http
- dart:_builtin
- dart:vmservice_io
- dart:_compact_hash
- dart:async
- dart:cli
- dart:collection
@@ -16,10 +16,11 @@ library from "org-dartlang-test:///main.dart" as main {
}
}
And 19 platform libraries:
And 20 platform libraries:
- dart:_http
- dart:_builtin
- dart:vmservice_io
- dart:_compact_hash
- dart:async
- dart:cli
- dart:collection
@@ -200,7 +200,7 @@ library from "org-dartlang-test:///main.dart" as main {
return result;
}
method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ toSet() → dart.core::Set<dart.core::int> {
dart.core::Set<dart.core::int> result = new dart.collection::_Set::•<dart.core::int>();
dart.core::Set<dart.core::int> result = new dart._compact_hash::_Set::•<dart.core::int>();
for (dart.core::int i = 0; i.{dart.core::num::<}(this.{dart.core::List::length}{dart.core::int}){(dart.core::num) → dart.core::bool}; i = i.{dart.core::num::+}(1){(dart.core::num) → dart.core::int}) {
result.{dart.core::Set::add}(this.{dart.core::List::[]}(i){(dart.core::int) → dart.core::int}){(dart.core::int) → dart.core::bool};
}
@@ -200,7 +200,7 @@ library from "org-dartlang-test:///main.dart" as main {
return result;
}
method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ toSet() → dart.core::Set<dart.core::int> {
dart.core::Set<dart.core::int> result = new dart.collection::_Set::•<dart.core::int>();
dart.core::Set<dart.core::int> result = new dart._compact_hash::_Set::•<dart.core::int>();
for (dart.core::int i = 0; i.{dart.core::num::<}(this.{dart.core::List::length}{dart.core::int}){(dart.core::num) → dart.core::bool}; i = i.{dart.core::num::+}(1){(dart.core::num) → dart.core::int}) {
result.{dart.core::Set::add}(this.{dart.core::List::[]}(i){(dart.core::int) → dart.core::int}){(dart.core::int) → dart.core::bool};
}
@@ -6,10 +6,11 @@ library from "org-dartlang-test:///main.dart" as main {
}
}
And 19 platform libraries:
And 20 platform libraries:
- dart:_http
- dart:_builtin
- dart:vmservice_io
- dart:_compact_hash
- dart:async
- dart:cli
- dart:collection
@@ -14,10 +14,11 @@ library from "org-dartlang-test:///main.dart" as main {
}
}
And 19 platform libraries:
And 20 platform libraries:
- dart:_http
- dart:_builtin
- dart:vmservice_io
- dart:_compact_hash
- dart:async
- dart:cli
- dart:collection
@@ -14,10 +14,11 @@ library from "org-dartlang-test:///main.dart" as main {
}
}
And 19 platform libraries:
And 20 platform libraries:
- dart:_http
- dart:_builtin
- dart:vmservice_io
- dart:_compact_hash
- dart:async
- dart:cli
- dart:collection
@@ -26,10 +26,11 @@ constants {
#C1 = 0
}
And 19 platform libraries:
And 20 platform libraries:
- dart:_http
- dart:_builtin
- dart:vmservice_io
- dart:_compact_hash
- dart:async
- dart:cli
- dart:collection
@@ -28,10 +28,11 @@ constants {
#C1 = 0
}
And 19 platform libraries:
And 20 platform libraries:
- dart:_http
- dart:_builtin
- dart:vmservice_io
- dart:_compact_hash
- dart:async
- dart:cli
- dart:collection
@@ -26,10 +26,11 @@ constants {
#C1 = 0
}
And 19 platform libraries:
And 20 platform libraries:
- dart:_http
- dart:_builtin
- dart:vmservice_io
- dart:_compact_hash
- dart:async
- dart:cli
- dart:collection
@@ -75,7 +75,7 @@ library test;
//
import self as self;
import "dart:core" as core;
import "dart:collection" as col;
import "dart:_compact_hash" as _co;
class A extends core::Object {
field core::int x = 0;
@@ -128,7 +128,7 @@ static method test1() → dynamic {
- 'List' is from 'dart:core'.
c1 = /*error:INVALID_ASSIGNMENT*/ /*@typeArgs=dynamic*/ {};
^" in ( block {
final core::Set<dynamic> #t3 = new col::_Set::•<dynamic>();
final core::Set<dynamic> #t3 = new _co::_Set::•<dynamic>();
} =>#t3) as{TypeError} core::List<dynamic>;
self::c2 = core::_GrowableList::•<dynamic>(0);
self::c2 = invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:43:59: Error: A value of type 'Set<dynamic>' can't be assigned to a variable of type 'List<dynamic>'.
@@ -136,7 +136,7 @@ static method test1() → dynamic {
- 'List' is from 'dart:core'.
c2 = /*error:INVALID_ASSIGNMENT*/ /*@typeArgs=dynamic*/ {};
^" in ( block {
final core::Set<dynamic> #t4 = new col::_Set::•<dynamic>();
final core::Set<dynamic> #t4 = new _co::_Set::•<dynamic>();
} =>#t4) as{TypeError} core::List<dynamic>;
self::d = <dynamic, dynamic>{};
self::d = invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:45:36: Error: A value of type 'int' can't be assigned to a variable of type 'Map<dynamic, dynamic>'.
@@ -1,7 +1,7 @@
library;
import self as self;
import "dart:core" as core;
import "dart:collection" as col;
import "dart:_compact_hash" as _co;
static method testLaterUnnamedParameter(<T extends core::Object? = dynamic>(T%, (T%) → void) → void f) → dynamic {
f<core::int>(0, (core::int x) → void {
@@ -51,13 +51,13 @@ static method testPropagateToLaterClosure(<T extends core::Object? = dynamic, U
}
static method testLongDependencyChain(<T extends core::Object? = dynamic, U extends core::Object? = dynamic, V extends core::Object? = dynamic>(() → T%, (T%) → U%, (U%) → V%) → V% f) → dynamic {
f<core::List<core::int>, core::int, core::Set<core::int>>(() → core::List<core::int> => core::_GrowableList::_literal1<core::int>(0), (core::List<core::int> x) → core::int => x.{core::Iterable::single}{core::int}, (core::int y) → core::Set<core::int> => block {
final core::Set<core::int> #t2 = new col::_Set::•<core::int>();
final core::Set<core::int> #t2 = new _co::_Set::•<core::int>();
#t2.{core::Set::add}{Invariant}(y){(core::int) → core::bool};
} =>#t2){(() → core::List<core::int>, (core::List<core::int>) → core::int, (core::int) → core::Set<core::int>) → core::Set<core::int>};
}
static method testDependencyCycle(<T extends core::Object? = dynamic, U extends core::Object? = dynamic>((U%) → T%, (T%) → U%) → core::Map<T%, U%> f) → dynamic {
f<core::List<core::Object?>, core::Set<core::Object?>>((core::Object? x) → core::List<core::Object?> => core::_GrowableList::_literal1<core::Object?>(x), (core::Object? y) → core::Set<core::Object?> => block {
final core::Set<core::Object?> #t3 = new col::_Set::•<core::Object?>();
final core::Set<core::Object?> #t3 = new _co::_Set::•<core::Object?>();
#t3.{core::Set::add}{Invariant}(y){(core::Object?) → core::bool};
} =>#t3){((core::Set<core::Object?>) → core::List<core::Object?>, (core::List<core::Object?>) → core::Set<core::Object?>) → core::Map<core::List<core::Object?>, core::Set<core::Object?>>};
}
@@ -1,7 +1,7 @@
library;
import self as self;
import "dart:core" as core;
import "dart:collection" as col;
import "dart:_compact_hash" as _co;
extension /* unnamed */ _extension#0 on core::int {
method _laterUnnamedParameter = self::_extension#0|_laterUnnamedParameter;
@@ -91,13 +91,13 @@ static method testPropagateToLaterClosure(core::int i) → dynamic {
}
static method testLongDependencyChain(core::int i) → dynamic {
self::_extension#0|_longDependencyChain<core::List<core::int>, core::int, core::Set<core::int>>(i, () → core::List<core::int> => core::_GrowableList::_literal1<core::int>(0), (core::List<core::int> x) → core::int => x.{core::Iterable::single}{core::int}, (core::int y) → core::Set<core::int> => block {
final core::Set<core::int> #t1 = new col::_Set::•<core::int>();
final core::Set<core::int> #t1 = new _co::_Set::•<core::int>();
#t1.{core::Set::add}{Invariant}(y){(core::int) → core::bool};
} =>#t1);
}
static method testDependencyCycle(core::int i) → dynamic {
self::_extension#0|_dependencyCycle<core::List<core::Object?>, core::Set<core::Object?>>(i, (core::Object? x) → core::List<core::Object?> => core::_GrowableList::_literal1<core::Object?>(x), (core::Object? y) → core::Set<core::Object?> => block {
final core::Set<core::Object?> #t2 = new col::_Set::•<core::Object?>();
final core::Set<core::Object?> #t2 = new _co::_Set::•<core::Object?>();
#t2.{core::Set::add}{Invariant}(y){(core::Object?) → core::bool};
} =>#t2);
}
@@ -53,6 +53,7 @@ library;
import self as self;
import "dart:core" as core;
import "dart:collection" as col;
import "dart:_compact_hash" as _co;
static method test1(Never n1, Never? n2, Null n3) → dynamic {
core::List<Never> l1 = block {
@@ -87,35 +88,35 @@ static method test1(Never n1, Never? n2, Null n3) → dynamic {
#t8.{core::Set::add}{Invariant}(n1){(Never) → core::bool};
} =>#t8;
core::Set<Never> s2 = block {
final core::Set<Never> #t9 = new col::_Set::•<Never>();
final core::Set<Never> #t9 = new _co::_Set::•<Never>();
final core::Iterable<Never>? #t10 = n1;
if(!(#t10 == null))
#t9.{core::Set::addAll}{Invariant}(#t10{core::Iterable<Never>}){(core::Iterable<Never>) → void};
#t9.{core::Set::add}{Invariant}(n1){(Never) → core::bool};
} =>#t9;
core::Set<dynamic> s3 = block {
final core::Set<dynamic> #t11 = new col::_Set::•<dynamic>();
final core::Set<dynamic> #t11 = new _co::_Set::•<dynamic>();
#t11.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:14:16: Error: Can't spread a value with static type 'Never?'.
var s3 = {...n2, n1};
^"){(dynamic) → core::bool};
#t11.{core::Set::add}{Invariant}(n1){(dynamic) → core::bool};
} =>#t11;
core::Set<Never> s4 = block {
final core::Set<Never> #t12 = new col::_Set::•<Never>();
final core::Set<Never> #t12 = new _co::_Set::•<Never>();
final core::Iterable<Never>? #t13 = n2;
if(!(#t13 == null))
#t12.{core::Set::addAll}{Invariant}(#t13{core::Iterable<Never>}){(core::Iterable<Never>) → void};
#t12.{core::Set::add}{Invariant}(n1){(Never) → core::bool};
} =>#t12;
core::Set<dynamic> s5 = block {
final core::Set<dynamic> #t14 = new col::_Set::•<dynamic>();
final core::Set<dynamic> #t14 = new _co::_Set::•<dynamic>();
#t14.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:16:16: Error: Can't spread a value with static type 'Null'.
var s5 = {...n3, n1};
^"){(dynamic) → core::bool};
#t14.{core::Set::add}{Invariant}(n1){(dynamic) → core::bool};
} =>#t14;
core::Set<Never> s6 = block {
final core::Set<Never> #t15 = new col::_Set::•<Never>();
final core::Set<Never> #t15 = new _co::_Set::•<Never>();
final core::Iterable<Never>? #t16 = n3;
if(!(#t16 == null))
#t15.{core::Set::addAll}{Invariant}(#t16{core::Iterable<Never>}){(core::Iterable<Never>) → void};
@@ -186,35 +187,35 @@ static method test2<N1 extends Never, N2 extends Never?, N3 extends Null>(self::
#t31.{core::Set::add}{Invariant}(n1){(self::test2::N1) → core::bool};
} =>#t31;
core::Set<self::test2::N1> s2 = block {
final core::Set<self::test2::N1> #t32 = new col::_Set::•<self::test2::N1>();
final core::Set<self::test2::N1> #t32 = new _co::_Set::•<self::test2::N1>();
final core::Iterable<self::test2::N1>? #t33 = n1;
if(!(#t33 == null))
#t32.{core::Set::addAll}{Invariant}(#t33{core::Iterable<self::test2::N1>}){(core::Iterable<self::test2::N1>) → void};
#t32.{core::Set::add}{Invariant}(n1){(self::test2::N1) → core::bool};
} =>#t32;
core::Set<dynamic> s3 = block {
final core::Set<dynamic> #t34 = new col::_Set::•<dynamic>();
final core::Set<dynamic> #t34 = new _co::_Set::•<dynamic>();
#t34.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:36:16: Error: Can't spread a value with static type 'N2'.
var s3 = {...n2, n1};
^"){(dynamic) → core::bool};
#t34.{core::Set::add}{Invariant}(n1){(dynamic) → core::bool};
} =>#t34;
core::Set<self::test2::N1> s4 = block {
final core::Set<self::test2::N1> #t35 = new col::_Set::•<self::test2::N1>();
final core::Set<self::test2::N1> #t35 = new _co::_Set::•<self::test2::N1>();
final core::Iterable<self::test2::N1>? #t36 = n2;
if(!(#t36 == null))
#t35.{core::Set::addAll}{Invariant}(#t36{core::Iterable<self::test2::N1>}){(core::Iterable<self::test2::N1>) → void};
#t35.{core::Set::add}{Invariant}(n1){(self::test2::N1) → core::bool};
} =>#t35;
core::Set<dynamic> s5 = block {
final core::Set<dynamic> #t37 = new col::_Set::•<dynamic>();
final core::Set<dynamic> #t37 = new _co::_Set::•<dynamic>();
#t37.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:38:16: Error: Can't spread a value with static type 'N3'.
var s5 = {...n3, n1};
^"){(dynamic) → core::bool};
#t37.{core::Set::add}{Invariant}(n1){(dynamic) → core::bool};
} =>#t37;
core::Set<self::test2::N1> s6 = block {
final core::Set<self::test2::N1> #t38 = new col::_Set::•<self::test2::N1>();
final core::Set<self::test2::N1> #t38 = new _co::_Set::•<self::test2::N1>();
final core::Iterable<self::test2::N1>? #t39 = n3;
if(!(#t39 == null))
#t38.{core::Set::addAll}{Invariant}(#t39{core::Iterable<self::test2::N1>}){(core::Iterable<self::test2::N1>) → void};
@@ -48,7 +48,7 @@ library;
//
import self as self;
import "dart:core" as core;
import "dart:collection" as col;
import "dart:_compact_hash" as _co;
static field core::int i = 1;
static field core::Map<core::int, core::String>? nullableMap = <core::int, core::String>{1: "Let", 2: "it", 3: "be"};
@@ -67,7 +67,7 @@ static field core::Map<dynamic, dynamic> map1 = block {
#t1.{core::Map::addAll}{Invariant}(self::nullableMap!){(core::Map<dynamic, dynamic>) → void};
} =>#t1;
static field core::Set<dynamic> set1 = block {
final core::Set<dynamic> #t2 = new col::_Set::•<dynamic>();
final core::Set<dynamic> #t2 = new _co::_Set::•<dynamic>();
#t2.{core::Set::add}{Invariant}(0){(dynamic) → core::bool};
if(self::i.{core::num::>}(0){(core::num) → core::bool})
#t2.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:23:17: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
@@ -108,7 +108,7 @@ static method testMap<X extends dynamic, Y extends core::Map<core::int, core::St
}
static method testIterables<X extends dynamic, Y extends core::List<core::int>?, Z extends core::List<core::int>>(self::testIterables::X% x, self::testIterables::Y% y, self::testIterables::Z z) → dynamic {
core::Set<dynamic> set2 = block {
final core::Set<dynamic> #t5 = new col::_Set::•<dynamic>();
final core::Set<dynamic> #t5 = new _co::_Set::•<dynamic>();
#t5.{core::Set::add}{Invariant}(0){(dynamic) → core::bool};
if(self::i.{core::num::>}(0){(core::num) → core::bool})
#t5.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43256.dart:48:19: Error: Unexpected type 'X' of a spread. Expected 'dynamic' or an Iterable.
@@ -1,7 +1,7 @@
library;
import self as self;
import "dart:core" as core;
import "dart:collection" as col;
import "dart:_compact_hash" as _co;
class C<X extends core::Object?, Y extends core::Object> extends core::Object {
synthetic constructor •() → self::C<self::C::X%, self::C::Y>
@@ -9,22 +9,22 @@ class C<X extends core::Object?, Y extends core::Object> extends core::Object {
;
method test(covariant-by-class self::C::X% x, covariant-by-class self::C::Y? y) → dynamic {
core::Set<core::Object?> v = block {
final core::Set<core::Object?> #t1 = new col::_Set::•<core::Object?>();
final core::Set<core::Object?> #t1 = new _co::_Set::•<core::Object?>();
#t1.{core::Set::add}{Invariant}(x){(core::Object?) → core::bool};
#t1.{core::Set::add}{Invariant}(42){(core::Object?) → core::bool};
} =>#t1;
core::Set<core::Object?> w = block {
final core::Set<core::Object?> #t2 = new col::_Set::•<core::Object?>();
final core::Set<core::Object?> #t2 = new _co::_Set::•<core::Object?>();
#t2.{core::Set::add}{Invariant}(42){(core::Object?) → core::bool};
#t2.{core::Set::add}{Invariant}(x){(core::Object?) → core::bool};
} =>#t2;
core::Set<core::Object?> p = block {
final core::Set<core::Object?> #t3 = new col::_Set::•<core::Object?>();
final core::Set<core::Object?> #t3 = new _co::_Set::•<core::Object?>();
#t3.{core::Set::add}{Invariant}(y){(core::Object?) → core::bool};
#t3.{core::Set::add}{Invariant}(42){(core::Object?) → core::bool};
} =>#t3;
core::Set<core::Object?> q = block {
final core::Set<core::Object?> #t4 = new col::_Set::•<core::Object?>();
final core::Set<core::Object?> #t4 = new _co::_Set::•<core::Object?>();
#t4.{core::Set::add}{Invariant}(42){(core::Object?) → core::bool};
#t4.{core::Set::add}{Invariant}(y){(core::Object?) → core::bool};
} =>#t4;
@@ -38,12 +38,12 @@ class C<X extends core::Object?, Y extends core::Object> extends core::Object {
self::assertLeftSubtype<core::Set<core::Object?>>(q);
if(x is core::Object?) {
core::Set<core::Object?> v = block {
final core::Set<core::Object?> #t5 = new col::_Set::•<core::Object?>();
final core::Set<core::Object?> #t5 = new _co::_Set::•<core::Object?>();
#t5.{core::Set::add}{Invariant}(x{self::C::X% & core::Object? /* '%' & '?' = '%' */}){(core::Object?) → core::bool};
#t5.{core::Set::add}{Invariant}(42){(core::Object?) → core::bool};
} =>#t5;
core::Set<core::Object?> w = block {
final core::Set<core::Object?> #t6 = new col::_Set::•<core::Object?>();
final core::Set<core::Object?> #t6 = new _co::_Set::•<core::Object?>();
#t6.{core::Set::add}{Invariant}(42){(core::Object?) → core::bool};
#t6.{core::Set::add}{Invariant}(x{self::C::X% & core::Object? /* '%' & '?' = '%' */}){(core::Object?) → core::bool};
} =>#t6;
@@ -58,7 +58,7 @@ static method assertRightSubtype(dynamic x) → dynamic {
x as core::Set<core::Object?>;
}
static method assertLeftSubtype<X extends core::Object? = dynamic>(self::assertLeftSubtype::X% x) → dynamic {
new col::_Set::•<core::Object?>() as self::assertLeftSubtype::X%;
new _co::_Set::•<core::Object?>() as self::assertLeftSubtype::X%;
}
static method main() → dynamic {
new self::C::•<core::int?, core::int>().{self::C::test}(42, null){(core::int?, core::int?) → dynamic};
@@ -167,6 +167,7 @@ library;
import self as self;
import "dart:core" as core;
import "dart:collection" as col;
import "dart:_compact_hash" as _co;
static method foo(core::bool condition, core::Iterable<dynamic> iterable, core::List<core::int>? a, core::Set<core::int>? b, core::Iterable<core::int>? c, core::Map<core::int, core::int>? d) → dynamic {
return <core::Object>[ block {
@@ -187,13 +188,13 @@ static method foo(core::bool condition, core::Iterable<dynamic> iterable, core::
- 'List' is from 'dart:core'.
<int, int>{...a}, // Error.
^": null}, block {
final core::Set<core::int> #t4 = new col::_Set::•<core::int>();
final core::Set<core::int> #t4 = new _co::_Set::•<core::int>();
#t4.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:13:14: Error: Unexpected type 'Map<int, int>?' of a spread. Expected 'dynamic' or an Iterable.
- 'Map' is from 'dart:core'.
<int>{...d}, // Error.
^"){(core::int) → core::bool};
} =>#t4, block {
final core::Set<core::int> #t5 = new col::_Set::•<core::int>();
final core::Set<core::int> #t5 = new _co::_Set::•<core::int>();
if(condition) {
synthesized core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:14:24: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
{if (condition) ...a}, // Error.
@@ -207,7 +208,7 @@ static method foo(core::bool condition, core::Iterable<dynamic> iterable, core::
}
}
} =>#t5, block {
final core::Set<core::int> #t8 = new col::_Set::•<core::int>();
final core::Set<core::int> #t8 = new _co::_Set::•<core::int>();
if(condition) {
synthesized core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:15:24: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
{if (condition) ...b}, // Error.
@@ -221,7 +222,7 @@ static method foo(core::bool condition, core::Iterable<dynamic> iterable, core::
}
}
} =>#t8, block {
final core::Set<core::int> #t11 = new col::_Set::•<core::int>();
final core::Set<core::int> #t11 = new _co::_Set::•<core::int>();
if(condition) {
synthesized core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:16:24: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
{if (condition) ...c}, // Error.
@@ -241,7 +242,7 @@ static method foo(core::bool condition, core::Iterable<dynamic> iterable, core::
{if (condition) ...d}, // Error.
^", null){(core::int, core::int) → void};
} =>#t14, block {
final core::Set<core::int> #t15 = new col::_Set::•<core::int>();
final core::Set<core::int> #t15 = new _co::_Set::•<core::int>();
{
synthesized core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator}{core::Iterator<dynamic>};
for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
@@ -261,7 +262,7 @@ static method foo(core::bool condition, core::Iterable<dynamic> iterable, core::
}
}
} =>#t15, block {
final core::Set<core::int> #t18 = new col::_Set::•<core::int>();
final core::Set<core::int> #t18 = new _co::_Set::•<core::int>();
{
synthesized core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator}{core::Iterator<dynamic>};
for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
@@ -281,7 +282,7 @@ static method foo(core::bool condition, core::Iterable<dynamic> iterable, core::
}
}
} =>#t18, block {
final core::Set<core::int> #t21 = new col::_Set::•<core::int>();
final core::Set<core::int> #t21 = new _co::_Set::•<core::int>();
{
synthesized core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator}{core::Iterator<dynamic>};
for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
@@ -312,7 +313,7 @@ static method foo(core::bool condition, core::Iterable<dynamic> iterable, core::
}
}
} =>#t24, block {
final core::Set<core::int> #t25 = new col::_Set::•<core::int>();
final core::Set<core::int> #t25 = new _co::_Set::•<core::int>();
for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
synthesized core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:22:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
{for (int i = 0; i < 42; ++i) ...a}, // Error.
@@ -326,7 +327,7 @@ static method foo(core::bool condition, core::Iterable<dynamic> iterable, core::
}
}
} =>#t25, block {
final core::Set<core::int> #t28 = new col::_Set::•<core::int>();
final core::Set<core::int> #t28 = new _co::_Set::•<core::int>();
for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
synthesized core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:23:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
{for (int i = 0; i < 42; ++i) ...b}, // Error.
@@ -340,7 +341,7 @@ static method foo(core::bool condition, core::Iterable<dynamic> iterable, core::
}
}
} =>#t28, block {
final core::Set<core::int> #t31 = new col::_Set::•<core::int>();
final core::Set<core::int> #t31 = new _co::_Set::•<core::int>();
for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
synthesized core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:24:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
{for (int i = 0; i < 42; ++i) ...c}, // Error.
@@ -360,17 +361,17 @@ static method foo(core::bool condition, core::Iterable<dynamic> iterable, core::
{for (int i = 0; i < 42; ++i) ...d}, // Error.
^", null){(core::int, core::int) → void};
} =>#t34, block {
final core::Set<core::int> #t35 = new col::_Set::•<core::int>();
final core::Set<core::int> #t35 = new _co::_Set::•<core::int>();
final core::Iterable<core::int>? #t36 = a;
if(!(#t36 == null))
#t35.{core::Set::addAll}{Invariant}(#t36{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
} =>#t35, block {
final core::Set<core::int> #t37 = new col::_Set::•<core::int>();
final core::Set<core::int> #t37 = new _co::_Set::•<core::int>();
final core::Iterable<core::int>? #t38 = b;
if(!(#t38 == null))
#t37.{core::Set::addAll}{Invariant}(#t38{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
} =>#t37, block {
final core::Set<core::int> #t39 = new col::_Set::•<core::int>();
final core::Set<core::int> #t39 = new _co::_Set::•<core::int>();
final core::Iterable<core::int>? #t40 = c;
if(!(#t40 == null))
#t39.{core::Set::addAll}{Invariant}(#t40{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
@@ -380,7 +381,7 @@ static method foo(core::bool condition, core::Iterable<dynamic> iterable, core::
if(!(#t42 == null))
#t41.{core::Map::addAll}{Invariant}(#t42{core::Map<core::int, core::int>}){(core::Map<core::int, core::int>) → void};
} =>#t41, block {
final core::Set<core::int> #t43 = new col::_Set::•<core::int>();
final core::Set<core::int> #t43 = new _co::_Set::•<core::int>();
if(condition) {
final core::Iterable<dynamic>? #t44 = a;
if(!(#t44 == null)) {
@@ -395,7 +396,7 @@ static method foo(core::bool condition, core::Iterable<dynamic> iterable, core::
}
}
} =>#t43, block {
final core::Set<core::int> #t47 = new col::_Set::•<core::int>();
final core::Set<core::int> #t47 = new _co::_Set::•<core::int>();
if(condition) {
final core::Iterable<dynamic>? #t48 = b;
if(!(#t48 == null)) {
@@ -410,7 +411,7 @@ static method foo(core::bool condition, core::Iterable<dynamic> iterable, core::
}
}
} =>#t47, block {
final core::Set<core::int> #t51 = new col::_Set::•<core::int>();
final core::Set<core::int> #t51 = new _co::_Set::•<core::int>();
if(condition) {
final core::Iterable<dynamic>? #t52 = c;
if(!(#t52 == null)) {
@@ -432,7 +433,7 @@ static method foo(core::bool condition, core::Iterable<dynamic> iterable, core::
#t55.{core::Map::addAll}{Invariant}(#t56{core::Map<core::int, core::int>}){(core::Map<core::int, core::int>) → void};
}
} =>#t55, block {
final core::Set<core::int> #t57 = new col::_Set::•<core::int>();
final core::Set<core::int> #t57 = new _co::_Set::•<core::int>();
{
synthesized core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator}{core::Iterator<dynamic>};
for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
@@ -453,7 +454,7 @@ static method foo(core::bool condition, core::Iterable<dynamic> iterable, core::
}
}
} =>#t57, block {
final core::Set<core::int> #t61 = new col::_Set::•<core::int>();
final core::Set<core::int> #t61 = new _co::_Set::•<core::int>();
{
synthesized core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator}{core::Iterator<dynamic>};
for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
@@ -474,7 +475,7 @@ static method foo(core::bool condition, core::Iterable<dynamic> iterable, core::
}
}
} =>#t61, block {
final core::Set<core::int> #t65 = new col::_Set::•<core::int>();
final core::Set<core::int> #t65 = new _co::_Set::•<core::int>();
{
synthesized core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator}{core::Iterator<dynamic>};
for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
@@ -508,7 +509,7 @@ static method foo(core::bool condition, core::Iterable<dynamic> iterable, core::
}
}
} =>#t69, block {
final core::Set<core::int> #t71 = new col::_Set::•<core::int>();
final core::Set<core::int> #t71 = new _co::_Set::•<core::int>();
for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
final core::Iterable<dynamic>? #t72 = a;
if(!(#t72 == null)) {
@@ -523,7 +524,7 @@ static method foo(core::bool condition, core::Iterable<dynamic> iterable, core::
}
}
} =>#t71, block {
final core::Set<core::int> #t75 = new col::_Set::•<core::int>();
final core::Set<core::int> #t75 = new _co::_Set::•<core::int>();
for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
final core::Iterable<dynamic>? #t76 = b;
if(!(#t76 == null)) {
@@ -538,7 +539,7 @@ static method foo(core::bool condition, core::Iterable<dynamic> iterable, core::
}
}
} =>#t75, block {
final core::Set<core::int> #t79 = new col::_Set::•<core::int>();
final core::Set<core::int> #t79 = new _co::_Set::•<core::int>();
for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
final core::Iterable<dynamic>? #t80 = c;
if(!(#t80 == null)) {
@@ -579,12 +580,12 @@ static method bar<X extends core::List<core::int>?, Y extends core::Set<core::in
^": null}, <core::int, core::int>{invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:54:19: Error: Unexpected type 'X' of a map spread entry. Expected 'dynamic' or a Map.
<int, int>{...x}, // Error.
^": null}, block {
final core::Set<core::int> #t88 = new col::_Set::•<core::int>();
final core::Set<core::int> #t88 = new _co::_Set::•<core::int>();
#t88.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:55:14: Error: Unexpected type 'W' of a spread. Expected 'dynamic' or an Iterable.
<int>{...w}, // Error.
^"){(core::int) → core::bool};
} =>#t88, block {
final core::Set<core::int> #t89 = new col::_Set::•<core::int>();
final core::Set<core::int> #t89 = new _co::_Set::•<core::int>();
if(condition) {
synthesized core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:56:24: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
{if (condition) ...x}, // Error.
@@ -598,7 +599,7 @@ static method bar<X extends core::List<core::int>?, Y extends core::Set<core::in
}
}
} =>#t89, block {
final core::Set<core::int> #t92 = new col::_Set::•<core::int>();
final core::Set<core::int> #t92 = new _co::_Set::•<core::int>();
if(condition) {
synthesized core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:57:24: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
{if (condition) ...y}, // Error.
@@ -612,7 +613,7 @@ static method bar<X extends core::List<core::int>?, Y extends core::Set<core::in
}
}
} =>#t92, block {
final core::Set<core::int> #t95 = new col::_Set::•<core::int>();
final core::Set<core::int> #t95 = new _co::_Set::•<core::int>();
if(condition) {
synthesized core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:58:24: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
{if (condition) ...z}, // Error.
@@ -632,7 +633,7 @@ static method bar<X extends core::List<core::int>?, Y extends core::Set<core::in
{if (condition) ...w}, // Error.
^", null){(core::int, core::int) → void};
} =>#t98, block {
final core::Set<core::int> #t99 = new col::_Set::•<core::int>();
final core::Set<core::int> #t99 = new _co::_Set::•<core::int>();
{
synthesized core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator}{core::Iterator<dynamic>};
for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
@@ -652,7 +653,7 @@ static method bar<X extends core::List<core::int>?, Y extends core::Set<core::in
}
}
} =>#t99, block {
final core::Set<core::int> #t102 = new col::_Set::•<core::int>();
final core::Set<core::int> #t102 = new _co::_Set::•<core::int>();
{
synthesized core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator}{core::Iterator<dynamic>};
for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
@@ -672,7 +673,7 @@ static method bar<X extends core::List<core::int>?, Y extends core::Set<core::in
}
}
} =>#t102, block {
final core::Set<core::int> #t105 = new col::_Set::•<core::int>();
final core::Set<core::int> #t105 = new _co::_Set::•<core::int>();
{
synthesized core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator}{core::Iterator<dynamic>};
for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
@@ -703,7 +704,7 @@ static method bar<X extends core::List<core::int>?, Y extends core::Set<core::in
}
}
} =>#t108, block {
final core::Set<core::int> #t109 = new col::_Set::•<core::int>();
final core::Set<core::int> #t109 = new _co::_Set::•<core::int>();
for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
synthesized core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:64:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
{for (int i = 0; i < 42; ++i) ...x}, // Error.
@@ -717,7 +718,7 @@ static method bar<X extends core::List<core::int>?, Y extends core::Set<core::in
}
}
} =>#t109, block {
final core::Set<core::int> #t112 = new col::_Set::•<core::int>();
final core::Set<core::int> #t112 = new _co::_Set::•<core::int>();
for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
synthesized core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:65:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
{for (int i = 0; i < 42; ++i) ...y}, // Error.
@@ -731,7 +732,7 @@ static method bar<X extends core::List<core::int>?, Y extends core::Set<core::in
}
}
} =>#t112, block {
final core::Set<core::int> #t115 = new col::_Set::•<core::int>();
final core::Set<core::int> #t115 = new _co::_Set::•<core::int>();
for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
synthesized core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/nnbd/issue43495.dart:66:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
{for (int i = 0; i < 42; ++i) ...z}, // Error.
@@ -751,17 +752,17 @@ static method bar<X extends core::List<core::int>?, Y extends core::Set<core::in
{for (int i = 0; i < 42; ++i) ...w}, // Error.
^", null){(core::int, core::int) → void};
} =>#t118, block {
final core::Set<core::int> #t119 = new col::_Set::•<core::int>();
final core::Set<core::int> #t119 = new _co::_Set::•<core::int>();
final core::Iterable<core::int>? #t120 = x;
if(!(#t120 == null))
#t119.{core::Set::addAll}{Invariant}(#t120{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
} =>#t119, block {
final core::Set<core::int> #t121 = new col::_Set::•<core::int>();
final core::Set<core::int> #t121 = new _co::_Set::•<core::int>();
final core::Iterable<core::int>? #t122 = y;
if(!(#t122 == null))
#t121.{core::Set::addAll}{Invariant}(#t122{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
} =>#t121, block {
final core::Set<core::int> #t123 = new col::_Set::•<core::int>();
final core::Set<core::int> #t123 = new _co::_Set::•<core::int>();
final core::Iterable<core::int>? #t124 = z;
if(!(#t124 == null))
#t123.{core::Set::addAll}{Invariant}(#t124{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
@@ -771,7 +772,7 @@ static method bar<X extends core::List<core::int>?, Y extends core::Set<core::in
if(!(#t126 == null))
#t125.{core::Map::addAll}{Invariant}(#t126{core::Map<core::int, core::int>}){(core::Map<core::int, core::int>) → void};
} =>#t125, block {
final core::Set<core::int> #t127 = new col::_Set::•<core::int>();
final core::Set<core::int> #t127 = new _co::_Set::•<core::int>();
if(condition) {
final core::Iterable<dynamic>? #t128 = x;
if(!(#t128 == null)) {
@@ -786,7 +787,7 @@ static method bar<X extends core::List<core::int>?, Y extends core::Set<core::in
}
}
} =>#t127, block {
final core::Set<core::int> #t131 = new col::_Set::•<core::int>();
final core::Set<core::int> #t131 = new _co::_Set::•<core::int>();
if(condition) {
final core::Iterable<dynamic>? #t132 = y;
if(!(#t132 == null)) {
@@ -801,7 +802,7 @@ static method bar<X extends core::List<core::int>?, Y extends core::Set<core::in
}
}
} =>#t131, block {
final core::Set<core::int> #t135 = new col::_Set::•<core::int>();
final core::Set<core::int> #t135 = new _co::_Set::•<core::int>();
if(condition) {
final core::Iterable<dynamic>? #t136 = z;
if(!(#t136 == null)) {
@@ -823,7 +824,7 @@ static method bar<X extends core::List<core::int>?, Y extends core::Set<core::in
#t139.{core::Map::addAll}{Invariant}(#t140{core::Map<core::int, core::int>}){(core::Map<core::int, core::int>) → void};
}
} =>#t139, block {
final core::Set<core::int> #t141 = new col::_Set::•<core::int>();
final core::Set<core::int> #t141 = new _co::_Set::•<core::int>();
{
synthesized core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator}{core::Iterator<dynamic>};
for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
@@ -844,7 +845,7 @@ static method bar<X extends core::List<core::int>?, Y extends core::Set<core::in
}
}
} =>#t141, block {
final core::Set<core::int> #t145 = new col::_Set::•<core::int>();
final core::Set<core::int> #t145 = new _co::_Set::•<core::int>();
{
synthesized core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator}{core::Iterator<dynamic>};
for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
@@ -865,7 +866,7 @@ static method bar<X extends core::List<core::int>?, Y extends core::Set<core::in
}
}
} =>#t145, block {
final core::Set<core::int> #t149 = new col::_Set::•<core::int>();
final core::Set<core::int> #t149 = new _co::_Set::•<core::int>();
{
synthesized core::Iterator<dynamic> :sync-for-iterator = iterable.{core::Iterable::iterator}{core::Iterator<dynamic>};
for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
@@ -899,7 +900,7 @@ static method bar<X extends core::List<core::int>?, Y extends core::Set<core::in
}
}
} =>#t153, block {
final core::Set<core::int> #t155 = new col::_Set::•<core::int>();
final core::Set<core::int> #t155 = new _co::_Set::•<core::int>();
for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
final core::Iterable<dynamic>? #t156 = x;
if(!(#t156 == null)) {
@@ -914,7 +915,7 @@ static method bar<X extends core::List<core::int>?, Y extends core::Set<core::in
}
}
} =>#t155, block {
final core::Set<core::int> #t159 = new col::_Set::•<core::int>();
final core::Set<core::int> #t159 = new _co::_Set::•<core::int>();
for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
final core::Iterable<dynamic>? #t160 = y;
if(!(#t160 == null)) {
@@ -929,7 +930,7 @@ static method bar<X extends core::List<core::int>?, Y extends core::Set<core::in
}
}
} =>#t159, block {
final core::Set<core::int> #t163 = new col::_Set::•<core::int>();
final core::Set<core::int> #t163 = new _co::_Set::•<core::int>();
for (core::int i = 0; i.{core::num::<}(42){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
final core::Iterable<dynamic>? #t164 = z;
if(!(#t164 == null)) {
@@ -1,7 +1,7 @@
library;
import self as self;
import "dart:core" as core;
import "dart:collection" as col;
import "dart:_compact_hash" as _co;
static method main() → dynamic {
has-declared-initializer core::List<core::int>? list = null;
@@ -47,7 +47,7 @@ static method main() → dynamic {
} =>#t11;
has-declared-initializer core::Set<core::int>? set = null;
core::print( block {
final core::Set<core::int> #t13 = new col::_Set::•<core::int>();
final core::Set<core::int> #t13 = new _co::_Set::•<core::int>();
#t13.{core::Set::add}{Invariant}(1){(core::int) → core::bool};
#t13.{core::Set::add}{Invariant}(2){(core::int) → core::bool};
final core::Iterable<core::int>? #t14 = set;
@@ -56,7 +56,7 @@ static method main() → dynamic {
#t13.{core::Set::add}{Invariant}(3){(core::int) → core::bool};
} =>#t13);
core::print( block {
final core::Set<core::int> #t15 = new col::_Set::•<core::int>();
final core::Set<core::int> #t15 = new _co::_Set::•<core::int>();
#t15.{core::Set::add}{Invariant}(1){(core::int) → core::bool};
#t15.{core::Set::add}{Invariant}(2){(core::int) → core::bool};
final has-declared-initializer core::Iterable<core::int>? #t16 = null;
@@ -65,13 +65,13 @@ static method main() → dynamic {
#t15.{core::Set::add}{Invariant}(3){(core::int) → core::bool};
} =>#t15);
core::Set<core::int> set1 = block {
final core::Set<core::int> #t17 = new col::_Set::•<core::int>();
final core::Set<core::int> #t17 = new _co::_Set::•<core::int>();
final core::Iterable<core::int>? #t18 = set;
if(!(#t18 == null))
#t17.{core::Set::addAll}{Invariant}(#t18{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
} =>#t17;
core::Set<core::int> set3 = block {
final core::Set<core::int> #t19 = new col::_Set::•<core::int>();
final core::Set<core::int> #t19 = new _co::_Set::•<core::int>();
#t19.{core::Set::add}{Invariant}(1){(core::int) → core::bool};
#t19.{core::Set::add}{Invariant}(2){(core::int) → core::bool};
final core::Iterable<core::int>? #t20 = set;
@@ -80,7 +80,7 @@ static method main() → dynamic {
#t19.{core::Set::add}{Invariant}(3){(core::int) → core::bool};
} =>#t19;
core::Set<core::int> set4 = block {
final core::Set<core::int> #t21 = new col::_Set::•<core::int>();
final core::Set<core::int> #t21 = new _co::_Set::•<core::int>();
#t21.{core::Set::add}{Invariant}(1){(core::int) → core::bool};
#t21.{core::Set::add}{Invariant}(2){(core::int) → core::bool};
final has-declared-initializer core::Iterable<core::int>? #t22 = null;
@@ -1,7 +1,7 @@
library;
import self as self;
import "dart:core" as core;
import "dart:collection" as col;
import "dart:_compact_hash" as _co;
class A extends core::Object {
synthetic constructor •() → self::A
@@ -43,13 +43,13 @@ static method warning(core::String s, core::List<core::String> l, core::Map<core
#t5.{core::List::addAll}{Invariant}(#t6{core::Iterable<core::String>}){(core::Iterable<core::String>) → void};
}
core::Set<core::String> a = block {
final core::Set<core::String> #t7 = new col::_Set::•<core::String>();
final core::Set<core::String> #t7 = new _co::_Set::•<core::String>();
final core::Iterable<core::String>? #t8 = l;
if(!(#t8 == null))
#t7.{core::Set::addAll}{Invariant}(#t8{core::Iterable<core::String>}){(core::Iterable<core::String>) → void};
} =>#t7;
{
final core::Set<core::String> #t9 = new col::_Set::•<core::String>();
final core::Set<core::String> #t9 = new _co::_Set::•<core::String>();
final core::Iterable<core::String>? #t10 = l;
if(!(#t10 == null))
#t9.{core::Set::addAll}{Invariant}(#t10{core::Iterable<core::String>}){(core::Iterable<core::String>) → void};
@@ -1,7 +1,7 @@
library;
import self as self;
import "dart:core" as core;
import "dart:collection" as col;
import "dart:_compact_hash" as _co;
static method foo1(core::int? x) → dynamic
return block {
@@ -12,7 +12,7 @@ static method foo1(core::int? x) → dynamic
} =>#t1;
static method foo2(core::String? x) → dynamic
return block {
final core::Set<core::String> #t3 = new col::_Set::•<core::String>();
final core::Set<core::String> #t3 = new _co::_Set::•<core::String>();
final core::String? #t4 = x;
if(!(#t4 == null))
#t3.{core::Set::add}{Invariant}(#t4{core::String}){(core::String) → core::bool};
@@ -33,7 +33,7 @@ static method bar1(core::int? x) → dynamic
} =>#t7;
static method bar2(core::int? x, core::bool b) → dynamic
return block {
final core::Set<core::int> #t9 = new col::_Set::•<core::int>();
final core::Set<core::int> #t9 = new _co::_Set::•<core::int>();
if(b) {
final core::int? #t10 = x;
if(!(#t10 == null))
@@ -42,7 +42,7 @@ static method bar2(core::int? x, core::bool b) → dynamic
} =>#t9;
static method bar3(core::int? x, core::List<core::String> y) → dynamic
return block {
final core::Set<core::int> #t11 = new col::_Set::•<core::int>();
final core::Set<core::int> #t11 = new _co::_Set::•<core::int>();
{
synthesized core::Iterator<core::String> :sync-for-iterator = y.{core::Iterable::iterator}{core::Iterator<core::String>};
for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
@@ -113,41 +113,41 @@ static method main() → dynamic {
self::expectShallowEqualLists(self::foo1(0) as{TypeError,ForDynamic} core::List<dynamic>, core::_GrowableList::_literal1<core::int>(0));
self::expectShallowEqualLists(self::foo1(null) as{TypeError,ForDynamic} core::List<dynamic>, core::_GrowableList::•<core::int>(0));
self::expectShallowEqualSets(self::foo2("") as{TypeError,ForDynamic} core::Set<dynamic>, block {
final core::Set<core::String> #t26 = new col::_Set::•<core::String>();
final core::Set<core::String> #t26 = new _co::_Set::•<core::String>();
#t26.{core::Set::add}{Invariant}(""){(core::String) → core::bool};
} =>#t26);
self::expectShallowEqualSets(self::foo2(null) as{TypeError,ForDynamic} core::Set<dynamic>, block {
final core::Set<core::String> #t27 = new col::_Set::•<core::String>();
final core::Set<core::String> #t27 = new _co::_Set::•<core::String>();
} =>#t27);
self::expectShallowEqualMaps(self::foo3(false, 0) as{TypeError,ForDynamic} core::Map<dynamic, dynamic>, <core::bool, core::num>{false: 0});
self::expectShallowEqualMaps(self::foo3(null, 0) as{TypeError,ForDynamic} core::Map<dynamic, dynamic>, <core::bool, core::num>{});
self::expectShallowEqualLists(self::bar1(0) as{TypeError,ForDynamic} core::List<dynamic>, core::_GrowableList::_literal1<core::int>(0));
self::expectShallowEqualLists(self::bar1(null) as{TypeError,ForDynamic} core::List<dynamic>, core::_GrowableList::•<core::int>(0));
self::expectShallowEqualSets(self::bar2(0, true) as{TypeError,ForDynamic} core::Set<dynamic>, block {
final core::Set<core::int> #t28 = new col::_Set::•<core::int>();
final core::Set<core::int> #t28 = new _co::_Set::•<core::int>();
#t28.{core::Set::add}{Invariant}(0){(core::int) → core::bool};
} =>#t28);
self::expectShallowEqualSets(self::bar2(0, false) as{TypeError,ForDynamic} core::Set<dynamic>, block {
final core::Set<core::int> #t29 = new col::_Set::•<core::int>();
final core::Set<core::int> #t29 = new _co::_Set::•<core::int>();
} =>#t29);
self::expectShallowEqualSets(self::bar2(null, true) as{TypeError,ForDynamic} core::Set<dynamic>, block {
final core::Set<core::int> #t30 = new col::_Set::•<core::int>();
final core::Set<core::int> #t30 = new _co::_Set::•<core::int>();
} =>#t30);
self::expectShallowEqualSets(self::bar2(null, false) as{TypeError,ForDynamic} core::Set<dynamic>, block {
final core::Set<core::int> #t31 = new col::_Set::•<core::int>();
final core::Set<core::int> #t31 = new _co::_Set::•<core::int>();
} =>#t31);
self::expectShallowEqualSets(self::bar3(0, core::_GrowableList::_literal2<core::String>("", "")) as{TypeError,ForDynamic} core::Set<dynamic>, block {
final core::Set<core::int> #t32 = new col::_Set::•<core::int>();
final core::Set<core::int> #t32 = new _co::_Set::•<core::int>();
#t32.{core::Set::add}{Invariant}(0){(core::int) → core::bool};
} =>#t32);
self::expectShallowEqualSets(self::bar3(null, core::_GrowableList::_literal2<core::String>("", "")) as{TypeError,ForDynamic} core::Set<dynamic>, block {
final core::Set<core::int> #t33 = new col::_Set::•<core::int>();
final core::Set<core::int> #t33 = new _co::_Set::•<core::int>();
} =>#t33);
self::expectShallowEqualSets(self::bar3(0, core::_GrowableList::•<core::String>(0)) as{TypeError,ForDynamic} core::Set<dynamic>, block {
final core::Set<core::int> #t34 = new col::_Set::•<core::int>();
final core::Set<core::int> #t34 = new _co::_Set::•<core::int>();
} =>#t34);
self::expectShallowEqualSets(self::bar3(null, core::_GrowableList::•<core::String>(0)) as{TypeError,ForDynamic} core::Set<dynamic>, block {
final core::Set<core::int> #t35 = new col::_Set::•<core::int>();
final core::Set<core::int> #t35 = new _co::_Set::•<core::int>();
} =>#t35);
self::expectShallowEqualMaps(self::bar4("", false) as{TypeError,ForDynamic} core::Map<dynamic, dynamic>, <core::String, core::bool>{"": false});
self::expectShallowEqualMaps(self::bar4("", null) as{TypeError,ForDynamic} core::Map<dynamic, dynamic>, <core::String, core::bool>{});
@@ -2,6 +2,7 @@ library;
import self as self;
import "dart:core" as core;
import "dart:collection" as col;
import "dart:_compact_hash" as _co;
[5]static method main([23] core::List<core::String> args) → void {
[45] [45] core::Set<core::String> fooSet = [54] [54] block {
@@ -13,7 +14,7 @@ import "dart:collection" as col;
[-1] for (; [127] [127] [-1] [-1] :sync-for-iterator.{core::Iterator::moveNext}[-1](){() → core::bool}; ) {
[122] [122] core::String s = [-1] [-1] [-1] [-1] :sync-for-iterator.{core::Iterator::current}{core::String};
[136] [136] [136] [-1] [-1] #t1.{core::Set::addAll}{Invariant}[-1]([136] block {
[-1] [-1] final core::Set<core::String> #t2 = [-1] [-1] new col::_Set::• [-1]<core::String>();
[-1] [-1] final core::Set<core::String> #t2 = [-1] [-1] new _co::_Set::• [-1]<core::String>();
[148] [148] [148] [-1] [-1] #t2.{core::Set::add}{Invariant}[-1]([148] "${[146] [146] s}"){(core::String) → core::bool};
[164] [164] [164] [-1] [-1] #t2.{core::Set::add}{Invariant}[-1]([164] "${[159] [159] s}_2"){(core::String) → core::bool};
} =>[-1] [-1] #t2){(core::Iterable<core::String>) → void};
@@ -21,7 +22,7 @@ import "dart:collection" as col;
}
[177] if([193] [193] [186] [186] [181] [181] args.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} [196] [196] 42)
[203] [203] [203] [-1] [-1] #t1.{core::Set::addAll}{Invariant}[-1]([203] block {
[-1] [-1] final core::Set<core::String> #t3 = [-1] [-1] new col::_Set::• [-1]<core::String>();
[-1] [-1] final core::Set<core::String> #t3 = [-1] [-1] new _co::_Set::• [-1]<core::String>();
[211] [211] [211] [-1] [-1] #t3.{core::Set::add}{Invariant}[-1]([211] "length"){(core::String) → core::bool};
[227] [227] [227] [-1] [-1] #t3.{core::Set::add}{Invariant}[-1]([227] "is"){(core::String) → core::bool};
[239] [239] [239] [-1] [-1] #t3.{core::Set::add}{Invariant}[-1]([239] "42"){(core::String) → core::bool};
@@ -37,7 +38,7 @@ import "dart:collection" as col;
[354] [354] core::String s = [-1] [-1] [-1] [-1] :sync-for-iterator.{core::Iterator::current}{core::String};
[-1] {
[368] [368] synthesized core::Iterator<core::String> :sync-for-iterator = [368] [368] [368]([368] block {
[-1] [-1] final core::Set<core::String> #t5 = [-1] [-1] new col::_Set::• [-1]<core::String>();
[-1] [-1] final core::Set<core::String> #t5 = [-1] [-1] new _co::_Set::• [-1]<core::String>();
[380] [380] [380] [-1] [-1] #t5.{core::Set::add}{Invariant}[-1]([380] "${[378] [378] s}"){(core::String) → core::bool};
[396] [396] [396] [-1] [-1] #t5.{core::Set::add}{Invariant}[-1]([396] "${[391] [391] s}_2"){(core::String) → core::bool};
} =>[-1] [-1] #t5).{core::Iterable::iterator}{core::Iterator<core::String>};
@@ -53,7 +54,7 @@ import "dart:collection" as col;
}
[409] if([425] [425] [418] [418] [413] [413] args.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} [428] [428] 42) {
[435] [435] synthesized core::Iterator<core::String> :sync-for-iterator = [435] [435] [435]([435] block {
[-1] [-1] final core::Set<core::String> #t8 = [-1] [-1] new col::_Set::• [-1]<core::String>();
[-1] [-1] final core::Set<core::String> #t8 = [-1] [-1] new _co::_Set::• [-1]<core::String>();
[443] [443] [443] [-1] [-1] #t8.{core::Set::add}{Invariant}[-1]([443] "length"){(core::String) → core::bool};
[459] [459] [459] [-1] [-1] #t8.{core::Set::add}{Invariant}[-1]([459] "is"){(core::String) → core::bool};
[471] [471] [471] [-1] [-1] #t8.{core::Set::add}{Invariant}[-1]([471] "42"){(core::String) → core::bool};
@@ -3,6 +3,7 @@ import self as self;
import "dart:core" as core;
import "dart:collection" as col;
import "dart:_internal" as _in;
import "dart:_compact_hash" as _co;
import "dart:math" as math;
import "dart:collection";
@@ -204,7 +205,7 @@ abstract class _MyList&Object&ListMixin<E extends core::Object? = dynamic> exten
return result;
}
method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ toSet() → core::Set<self::_MyList&Object&ListMixin::E%> {
core::Set<self::_MyList&Object&ListMixin::E%> result = new col::_Set::•<self::_MyList&Object&ListMixin::E%>();
core::Set<self::_MyList&Object&ListMixin::E%> result = new _co::_Set::•<self::_MyList&Object&ListMixin::E%>();
for (core::int i = 0; i.{core::num::<}(this.{core::List::length}{core::int}){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
result.{core::Set::add}(this.{core::List::[]}(i){(core::int) → self::_MyList&Object&ListMixin::E%}){(self::_MyList&Object&ListMixin::E%) → core::bool};
}
@@ -68,6 +68,7 @@ import self as cac;
import "dart:core" as core;
import "dart:collection" as col;
import "dart:_internal" as _in;
import "dart:_compact_hash" as _co;
import "dart:math" as math;
import "cache_lookups.dart" as self;
@@ -271,7 +272,7 @@ abstract class _CustomList&Object&ListMixin<E extends core::Object? = dynamic> e
return result;
}
method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ toSet() → core::Set<cac::_CustomList&Object&ListMixin::E%> {
core::Set<cac::_CustomList&Object&ListMixin::E%> result = new col::_Set::•<cac::_CustomList&Object&ListMixin::E%>();
core::Set<cac::_CustomList&Object&ListMixin::E%> result = new _co::_Set::•<cac::_CustomList&Object&ListMixin::E%>();
for (core::int i = 0; i.{core::num::<}(this.{core::List::length}{core::int}){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
result.{core::Set::add}(this.{core::List::[]}(i){(core::int) → cac::_CustomList&Object&ListMixin::E%}){(cac::_CustomList&Object&ListMixin::E%) → core::bool};
}
@@ -1,7 +1,7 @@
library;
import self as self;
import "dart:core" as core;
import "dart:collection" as col;
import "dart:_compact_hash" as _co;
static method testList(dynamic x, dynamic list) → dynamic {
return block {
@@ -17,7 +17,7 @@ static method testList(dynamic x, dynamic list) → dynamic {
}
static method testSet(dynamic x, dynamic list) → dynamic {
return block {
final core::Set<dynamic> #t2 = new col::_Set::•<dynamic>();
final core::Set<dynamic> #t2 = new _co::_Set::•<dynamic>();
#t2.{core::Set::add}{Invariant}(0){(dynamic) → core::bool};
{
final synthesized dynamic #0#0 = list;
@@ -1,11 +1,11 @@
library;
import self as self;
import "dart:core" as core;
import "dart:collection" as col;
import "dart:_compact_hash" as _co;
static method test1(dynamic x, dynamic another) → core::Iterable<dynamic> {
return block {
final core::Set<dynamic> #t1 = new col::_Set::•<dynamic>();
final core::Set<dynamic> #t1 = new _co::_Set::•<dynamic>();
hoisted core::int i;
hoisted core::int n;
{
@@ -33,7 +33,7 @@ static method test1(dynamic x, dynamic another) → core::Iterable<dynamic> {
}
static method test2(dynamic x, dynamic another) → core::Iterable<dynamic> {
return block {
final core::Set<dynamic> #t12 = new col::_Set::•<dynamic>();
final core::Set<dynamic> #t12 = new _co::_Set::•<dynamic>();
{
final synthesized dynamic #0#0 = x;
if(#0#0 is core::String) {
@@ -51,7 +51,7 @@ static method test2(dynamic x, dynamic another) → core::Iterable<dynamic> {
}
static method test3(dynamic x, dynamic another) → core::Iterable<dynamic> {
return block {
final core::Set<dynamic> #t15 = new col::_Set::•<dynamic>();
final core::Set<dynamic> #t15 = new _co::_Set::•<dynamic>();
{
synthesized core::Iterator<dynamic> :sync-for-iterator = (x as{TypeError,ForDynamic} core::Iterable<dynamic>).{core::Iterable::iterator}{core::Iterator<dynamic>};
for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
@@ -79,51 +79,51 @@ static method test3(dynamic x, dynamic another) → core::Iterable<dynamic> {
}
static method main() → dynamic {
self::expectSetEquals(self::test1(core::_GrowableList::_literal2<core::int>(0, 2), block {
final core::Set<core::int> #t19 = new col::_Set::•<core::int>();
final core::Set<core::int> #t19 = new _co::_Set::•<core::int>();
#t19.{core::Set::add}{Invariant}(1){(core::int) → core::bool};
#t19.{core::Set::add}{Invariant}(2){(core::int) → core::bool};
#t19.{core::Set::add}{Invariant}(3){(core::int) → core::bool};
} =>#t19) as core::Set<dynamic>, block {
final core::Set<dynamic> #t20 = new col::_Set::•<dynamic>();
final core::Set<dynamic> #t20 = new _co::_Set::•<dynamic>();
#t20.{core::Set::add}{Invariant}(1){(dynamic) → core::bool};
#t20.{core::Set::add}{Invariant}(2){(dynamic) → core::bool};
#t20.{core::Set::add}{Invariant}(3){(dynamic) → core::bool};
} =>#t20);
self::expectSetEquals(self::test2(core::_GrowableList::_literal2<core::int>(0, 0), block {
final core::Set<core::int> #t21 = new col::_Set::•<core::int>();
final core::Set<core::int> #t21 = new _co::_Set::•<core::int>();
#t21.{core::Set::add}{Invariant}(1){(core::int) → core::bool};
#t21.{core::Set::add}{Invariant}(2){(core::int) → core::bool};
#t21.{core::Set::add}{Invariant}(3){(core::int) → core::bool};
} =>#t21) as core::Set<dynamic>, block {
final core::Set<dynamic> #t22 = new col::_Set::•<dynamic>();
final core::Set<dynamic> #t22 = new _co::_Set::•<dynamic>();
} =>#t22);
self::expectThrows(() → void => self::test1(core::_GrowableList::•<dynamic>(0), <dynamic, dynamic>{}));
self::expectSetEquals(self::test2("foo", block {
final core::Set<core::int> #t23 = new col::_Set::•<core::int>();
final core::Set<core::int> #t23 = new _co::_Set::•<core::int>();
#t23.{core::Set::add}{Invariant}(1){(core::int) → core::bool};
#t23.{core::Set::add}{Invariant}(2){(core::int) → core::bool};
#t23.{core::Set::add}{Invariant}(3){(core::int) → core::bool};
} =>#t23) as core::Set<dynamic>, block {
final core::Set<dynamic> #t24 = new col::_Set::•<dynamic>();
final core::Set<dynamic> #t24 = new _co::_Set::•<dynamic>();
#t24.{core::Set::add}{Invariant}(1){(dynamic) → core::bool};
#t24.{core::Set::add}{Invariant}(2){(dynamic) → core::bool};
#t24.{core::Set::add}{Invariant}(3){(dynamic) → core::bool};
} =>#t24);
self::expectSetEquals(self::test2(false, block {
final core::Set<core::int> #t25 = new col::_Set::•<core::int>();
final core::Set<core::int> #t25 = new _co::_Set::•<core::int>();
#t25.{core::Set::add}{Invariant}(1){(core::int) → core::bool};
#t25.{core::Set::add}{Invariant}(2){(core::int) → core::bool};
#t25.{core::Set::add}{Invariant}(3){(core::int) → core::bool};
} =>#t25) as core::Set<dynamic>, block {
final core::Set<dynamic> #t26 = new col::_Set::•<dynamic>();
final core::Set<dynamic> #t26 = new _co::_Set::•<dynamic>();
} =>#t26);
self::expectSetEquals(self::test3(core::_GrowableList::_literal2<core::List<core::int>>(core::_GrowableList::_literal1<core::int>(0), core::_GrowableList::_literal1<core::int>(1)), block {
final core::Set<core::int> #t27 = new col::_Set::•<core::int>();
final core::Set<core::int> #t27 = new _co::_Set::•<core::int>();
#t27.{core::Set::add}{Invariant}(1){(core::int) → core::bool};
#t27.{core::Set::add}{Invariant}(2){(core::int) → core::bool};
#t27.{core::Set::add}{Invariant}(3){(core::int) → core::bool};
} =>#t27) as core::Set<dynamic>, block {
final core::Set<dynamic> #t28 = new col::_Set::•<dynamic>();
final core::Set<dynamic> #t28 = new _co::_Set::•<dynamic>();
#t28.{core::Set::add}{Invariant}(1){(dynamic) → core::bool};
#t28.{core::Set::add}{Invariant}(2){(dynamic) → core::bool};
#t28.{core::Set::add}{Invariant}(3){(dynamic) → core::bool};
@@ -1,7 +1,7 @@
library;
import self as self;
import "dart:core" as core;
import "dart:collection" as col;
import "dart:_compact_hash" as _co;
static method test1(dynamic x, dynamic another) → dynamic {
return block {
@@ -73,7 +73,7 @@ static method main() → dynamic {
self::expectEquals(self::mapToString(self::test3(0, 1, <core::int, core::int>{2: 2}) as{TypeError,ForDynamic} core::Map<dynamic, dynamic>), self::mapToString(<dynamic, dynamic>{1: 1, 2: 0, 3: 3}));
self::expectEquals(self::mapToString(self::test3("foo", 1, <core::int, core::int>{2: 2}) as{TypeError,ForDynamic} core::Map<dynamic, dynamic>), self::mapToString(<dynamic, dynamic>{1: 1, 2: 2, 3: 3}));
self::expectEquals(self::mapToString(self::test3("foo", "bar", block {
final core::Set<core::int> #t4 = new col::_Set::•<core::int>();
final core::Set<core::int> #t4 = new _co::_Set::•<core::int>();
#t4.{core::Set::add}{Invariant}(2){(core::int) → core::bool};
#t4.{core::Set::add}{Invariant}(2){(core::int) → core::bool};
} =>#t4) as{TypeError,ForDynamic} core::Map<dynamic, dynamic>), self::mapToString(<dynamic, dynamic>{1: 1, 3: 3}));
@@ -1,7 +1,7 @@
library;
import self as self;
import "dart:core" as core;
import "dart:collection" as col;
import "dart:_compact_hash" as _co;
static method test1() → dynamic {
{
@@ -54,7 +54,7 @@ static method test2() → dynamic {
}
static method test3() → core::Iterable<core::bool> {
return block {
final core::Set<core::bool> #t18 = new col::_Set::•<core::bool>();
final core::Set<core::bool> #t18 = new _co::_Set::•<core::bool>();
{
synthesized core::Iterator<core::List<core::int>> :sync-for-iterator = core::_GrowableList::_literal1<core::List<core::int>>(core::_GrowableList::_literal4<core::int>(3, 4, 5, 6)).{core::Iterable::iterator}{core::Iterator<core::List<core::int>>};
for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
@@ -16,7 +16,7 @@ library;
//
import self as self;
import "dart:core" as core;
import "dart:collection" as col;
import "dart:_compact_hash" as _co;
static method test1(dynamic x) → dynamic
return block {
@@ -39,7 +39,7 @@ test1(dynamic x) => [1, if (x case int y) 2 else y, 3]; // Error.
} =>#t1;
static method test2(dynamic x) → dynamic
return block {
final core::Set<core::int> #t2 = new col::_Set::•<core::int>();
final core::Set<core::int> #t2 = new _co::_Set::•<core::int>();
#t2.{core::Set::add}{Invariant}(1){(core::int) → core::bool};
{
final synthesized dynamic #0#0 = x;
@@ -32,7 +32,7 @@ library;
//
import self as self;
import "dart:core" as core;
import "dart:collection" as col;
import "dart:_compact_hash" as _co;
static method test1(dynamic x1) → dynamic {
{
@@ -154,7 +154,7 @@ static method test5(dynamic x5) → dynamic {
}
static method test6(dynamic x6) → dynamic {
return block {
final core::Set<core::int> #t13 = new col::_Set::•<core::int>();
final core::Set<core::int> #t13 = new _co::_Set::•<core::int>();
hoisted core::int i6;
hoisted core::int n6;
{
@@ -1,11 +1,12 @@
library;
import self as self;
import "dart:core" as core;
import "dart:_compact_hash" as _co;
import "dart:collection" as col;
static method test(dynamic y) → core::Iterable<dynamic> {
return block {
final core::Set<dynamic> #t1 = new col::_Set::•<dynamic>();
final core::Set<dynamic> #t1 = new _co::_Set::•<dynamic>();
{
synthesized core::Iterator<dynamic> :sync-for-iterator = ( block {
final core::Set<dynamic> #t2 = col::LinkedHashSet::of<dynamic>(y as{TypeError,ForDynamic} core::Iterable<dynamic>);
@@ -8,12 +8,12 @@ library;
//
import self as self;
import "dart:core" as core;
import "dart:collection" as col;
import "dart:_compact_hash" as _co;
static method test() → void {
{
final synthesized core::Set<core::int> #0#0 = block {
final core::Set<core::int> #t1 = new col::_Set::•<core::int>();
final core::Set<core::int> #t1 = new _co::_Set::•<core::int>();
#t1.{core::Set::add}{Invariant}(0){(core::int) → core::bool};
} =>#t1;
final const synthesized Never #0#1 = invalid-expression "pkg/front_end/testcases/patterns/issue54230.dart:6:22: Error: Both Iterable and Map spread elements encountered in ambiguous literal.
@@ -3,6 +3,7 @@ import self as self;
import "dart:core" as core;
import "dart:collection" as col;
import "dart:_internal" as _in;
import "dart:_compact_hash" as _co;
import "dart:math" as math;
import "dart:collection";
@@ -204,7 +205,7 @@ abstract class _A&Object&ListMixin extends core::Object implements col::ListBase
return result;
}
method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ toSet() → core::Set<core::int> {
core::Set<core::int> result = new col::_Set::•<core::int>();
core::Set<core::int> result = new _co::_Set::•<core::int>();
for (core::int i = 0; i.{core::num::<}(this.{core::List::length}{core::int}){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
result.{core::Set::add}(this.{core::List::[]}(i){(core::int) → core::int}){(core::int) → core::bool};
}
@@ -3,6 +3,7 @@ import self as self;
import "dart:core" as core;
import "dart:collection" as col;
import "dart:_internal" as _in;
import "dart:_compact_hash" as _co;
import "dart:math" as math;
import "dart:collection";
@@ -204,7 +205,7 @@ abstract class _NegativeLengthList&Object&ListMixin<E extends core::Object? = dy
return result;
}
method /* from org-dartlang-sdk:///sdk/lib/collection/list.dart */ toSet() → core::Set<self::_NegativeLengthList&Object&ListMixin::E%> {
core::Set<self::_NegativeLengthList&Object&ListMixin::E%> result = new col::_Set::•<self::_NegativeLengthList&Object&ListMixin::E%>();
core::Set<self::_NegativeLengthList&Object&ListMixin::E%> result = new _co::_Set::•<self::_NegativeLengthList&Object&ListMixin::E%>();
for (core::int i = 0; i.{core::num::<}(this.{core::List::length}{core::int}){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
result.{core::Set::add}(this.{core::List::[]}(i){(core::int) → self::_NegativeLengthList&Object&ListMixin::E%}){(self::_NegativeLengthList&Object&ListMixin::E%) → core::bool};
}
@@ -1,7 +1,7 @@
library;
import self as self;
import "dart:core" as core;
import "dart:collection" as col;
import "dart:_compact_hash" as _co;
static method f(dynamic x) → void
return block {
@@ -20,7 +20,7 @@ static method f(dynamic x) → void
} =>#t1;
static method g(dynamic x) → void
return block {
final core::Set<dynamic> #t6 = new col::_Set::•<dynamic>();
final core::Set<dynamic> #t6 = new _co::_Set::•<dynamic>();
hoisted dynamic a;
hoisted dynamic b;
{
@@ -1,14 +1,14 @@
library;
import self as self;
import "dart:core" as core;
import "dart:collection" as col;
import "dart:_compact_hash" as _co;
import "package:expect/expect.dart" as exp;
import "package:expect/expect.dart";
static method test1(dynamic stringList) → dynamic {
core::Set<core::int> intSet = block {
final core::Set<core::int> #t1 = new col::_Set::•<core::int>();
final core::Set<core::int> #t1 = new _co::_Set::•<core::int>();
final core::Iterable<dynamic>? #t2 = stringList as{TypeError,ForDynamic} core::Iterable<dynamic>?;
if(!(#t2 == null)) {
synthesized core::Iterator<dynamic> :sync-for-iterator = #t2{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
@@ -42,6 +42,7 @@ library;
//
import self as self;
import "dart:core" as core;
import "dart:_compact_hash" as _co;
import "dart:collection" as col;
import "dart:async" as asy;
@@ -51,17 +52,17 @@ import "dart:collection" show LinkedHashMap, LinkedHashSet;
static method main() → dynamic async /* emittedValueType= dynamic */ {
core::Map<core::int, core::bool> m = <core::int, core::bool>{};
core::Set<core::int> s = block {
final core::Set<core::int> #t1 = new col::_Set::•<core::int>();
final core::Set<core::int> #t1 = new _co::_Set::•<core::int>();
} =>#t1;
core::Iterable<core::int> i = block {
final core::Set<core::int> #t2 = new col::_Set::•<core::int>();
final core::Set<core::int> #t2 = new _co::_Set::•<core::int>();
} =>#t2;
col::LinkedHashSet<core::int> lhs = invalid-expression "pkg/front_end/testcases/set_literals/disambiguation_rule.dart:13:28: Error: A value of type 'Set<dynamic>' can't be assigned to a variable of type 'LinkedHashSet<int>'.
- 'Set' is from 'dart:core'.
- 'LinkedHashSet' is from 'dart:collection'.
LinkedHashSet<int> lhs = {};
^" in ( block {
final core::Set<dynamic> #t3 = new col::_Set::•<dynamic>();
final core::Set<dynamic> #t3 = new _co::_Set::•<dynamic>();
} =>#t3) as{TypeError} col::LinkedHashSet<core::int>;
col::LinkedHashMap<core::int, core::bool> lhm = invalid-expression "pkg/front_end/testcases/set_literals/disambiguation_rule.dart:14:34: Error: A value of type 'Map<dynamic, dynamic>' can't be assigned to a variable of type 'LinkedHashMap<int, bool>'.
- 'Map' is from 'dart:core'.
@@ -83,11 +84,11 @@ static method mapfun() → asy::Future<core::Map<core::int, core::bool>> async /
return <core::int, core::bool>{};
static method setfun() → asy::Future<core::Set<core::int>> async /* emittedValueType= core::Set<core::int> */
return block {
final core::Set<core::int> #t4 = new col::_Set::•<core::int>();
final core::Set<core::int> #t4 = new _co::_Set::•<core::int>();
} =>#t4;
static method iterablefun() → asy::Future<core::Iterable<core::int>> async /* emittedValueType= core::Iterable<core::int> */
return block {
final core::Set<core::int> #t5 = new col::_Set::•<core::int>();
final core::Set<core::int> #t5 = new _co::_Set::•<core::int>();
} =>#t5;
static method lhsfun() → asy::Future<col::LinkedHashSet<core::int>> async /* emittedValueType= col::LinkedHashSet<core::int> */
return invalid-expression "pkg/front_end/testcases/set_literals/disambiguation_rule.dart:32:46: Error: A value of type 'Set<dynamic>' can't be returned from an async function with return type 'Future<LinkedHashSet<int>>'.
@@ -96,7 +97,7 @@ static method lhsfun() → asy::Future<col::LinkedHashSet<core::int>> async /* e
- 'LinkedHashSet' is from 'dart:collection'.
Future<LinkedHashSet<int>> lhsfun() async => {};
^" in ( block {
final core::Set<dynamic> #t6 = new col::_Set::•<dynamic>();
final core::Set<dynamic> #t6 = new _co::_Set::•<dynamic>();
} =>#t6) as{TypeError} col::LinkedHashSet<core::int>;
static method lhmfun() → asy::Future<col::LinkedHashMap<core::int, core::bool>> async /* emittedValueType= col::LinkedHashMap<core::int, core::bool> */
return invalid-expression "pkg/front_end/testcases/set_literals/disambiguation_rule.dart:33:52: Error: A value of type 'Map<dynamic, dynamic>' can't be returned from an async function with return type 'Future<LinkedHashMap<int, bool>>'.
@@ -109,11 +110,11 @@ static method mapfun2() → FutureOr<core::Map<core::int, core::bool>>
return <core::int, core::bool>{};
static method setfun2() → FutureOr<core::Set<core::int>>
return block {
final core::Set<core::int> #t7 = new col::_Set::•<core::int>();
final core::Set<core::int> #t7 = new _co::_Set::•<core::int>();
} =>#t7;
static method iterablefun2() → FutureOr<core::Iterable<core::int>>
return block {
final core::Set<core::int> #t8 = new col::_Set::•<core::int>();
final core::Set<core::int> #t8 = new _co::_Set::•<core::int>();
} =>#t8;
static method lhsfun2() → FutureOr<col::LinkedHashSet<core::int>>
return invalid-expression "pkg/front_end/testcases/set_literals/disambiguation_rule.dart:38:43: Error: A value of type 'Set<dynamic>' can't be returned from a function with return type 'FutureOr<LinkedHashSet<int>>'.
@@ -121,7 +122,7 @@ static method lhsfun2() → FutureOr<col::LinkedHashSet<core::int>>
- 'LinkedHashSet' is from 'dart:collection'.
FutureOr<LinkedHashSet<int>> lhsfun2() => {};
^" in ( block {
final core::Set<dynamic> #t9 = new col::_Set::•<dynamic>();
final core::Set<dynamic> #t9 = new _co::_Set::•<dynamic>();
} =>#t9) as{TypeError} FutureOr<col::LinkedHashSet<core::int>>;
static method lhmfun2() → FutureOr<col::LinkedHashMap<core::int, core::bool>>
return invalid-expression "pkg/front_end/testcases/set_literals/disambiguation_rule.dart:39:49: Error: A value of type 'Map<dynamic, dynamic>' can't be returned from a function with return type 'FutureOr<LinkedHashMap<int, bool>>'.
@@ -1,6 +1,7 @@
library;
import self as self;
import "dart:core" as core;
import "dart:_compact_hash" as _co;
import "dart:collection" as col;
static method foldInitialElements() → void {
@@ -17,7 +18,7 @@ static method foldInitialElements() → void {
} =>#t1;
self::expect(core::_GrowableList::generate<core::int?>(7, (core::int? i) → core::int? => i), list);
core::Set<core::int?> set = block {
final core::Set<core::int?> #t2 = new col::_Set::•<core::int?>();
final core::Set<core::int?> #t2 = new _co::_Set::•<core::int?>();
#t2.{core::Set::add}{Invariant}(element0 as{TypeError,ForDynamic} core::int?){(core::int?) → core::bool};
#t2.{core::Set::add}{Invariant}(element1{core::int}){(core::int?) → core::bool};
#t2.{core::Set::add}{Invariant}(element2){(core::int?) → core::bool};
@@ -51,7 +52,7 @@ static method foldInitialSpread1() → void {
} =>#t3;
self::expect(core::_GrowableList::generate<core::int>(7, (core::int i) → core::int => i), list);
core::Set<core::int> set = block {
final core::Set<core::int> #t6 = new col::_Set::•<core::int>();
final core::Set<core::int> #t6 = new _co::_Set::•<core::int>();
{
synthesized core::Iterator<dynamic> :sync-for-iterator = (initial as{TypeError,ForDynamic} core::Iterable<dynamic>).{core::Iterable::iterator}{core::Iterator<dynamic>};
for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
@@ -178,7 +179,7 @@ static method foldInitialSpread6([core::bool c = #C1]) → void {
} =>#t17;
self::expect(core::_GrowableList::generate<core::int>(7, (core::int i) → core::int => i), list);
core::Set<core::int> set = block {
final core::Set<core::int> #t19 = new col::_Set::•<core::int>();
final core::Set<core::int> #t19 = new _co::_Set::•<core::int>();
final core::Iterable<core::int>? #t20 = initial;
if(!(#t20 == null))
#t19.{core::Set::addAll}{Invariant}(#t20{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
@@ -1,7 +1,7 @@
library;
import self as self;
import "dart:core" as core;
import "dart:collection" as col;
import "dart:_compact_hash" as _co;
static method main() → dynamic {
core::List<core::int> list1 = core::_GrowableList::_literal1<core::int>(0);
@@ -25,19 +25,19 @@ static method main() → dynamic {
#t1.{core::List::add}{Invariant}(2){(core::int?) → void};
} =>#t1;
core::Set<core::int> set1 = block {
final core::Set<core::int> #t4 = new col::_Set::•<core::int>();
final core::Set<core::int> #t4 = new _co::_Set::•<core::int>();
#t4.{core::Set::add}{Invariant}(0){(core::int) → core::bool};
} =>#t4;
core::Set<core::int?> set2 = block {
final core::Set<core::int?> #t5 = new col::_Set::•<core::int?>();
final core::Set<core::int?> #t5 = new _co::_Set::•<core::int?>();
#t5.{core::Set::add}{Invariant}(0){(core::int?) → core::bool};
} =>#t5;
dynamic set3 = block {
final core::Set<core::int> #t6 = new col::_Set::•<core::int>();
final core::Set<core::int> #t6 = new _co::_Set::•<core::int>();
#t6.{core::Set::add}{Invariant}(0){(core::int) → core::bool};
} =>#t6;
core::Set<core::int?> set = block {
final core::Set<core::int?> #t7 = new col::_Set::•<core::int?>();
final core::Set<core::int?> #t7 = new _co::_Set::•<core::int?>();
#t7.{core::Set::add}{Invariant}(0){(core::int?) → core::bool};
#t7.{core::Set::addAll}{Invariant}(set1){(core::Iterable<core::int?>) → void};
#t7.{core::Set::addAll}{Invariant}(set2){(core::Iterable<core::int?>) → void};
@@ -1,41 +1,42 @@
library;
import self as self;
import "dart:core" as core;
import "dart:_compact_hash" as _co;
import "dart:collection" as col;
static method useAddAll() → void {
dynamic dynamicSet1 = block {
final core::Set<core::int> #t1 = new col::_Set::•<core::int>();
final core::Set<core::int> #t1 = new _co::_Set::•<core::int>();
#t1.{core::Set::add}{Invariant}(0){(core::int) → core::bool};
#t1.{core::Set::add}{Invariant}(1){(core::int) → core::bool};
#t1.{core::Set::add}{Invariant}(2){(core::int) → core::bool};
} =>#t1;
dynamic dynamicSet2 = block {
final core::Set<core::num> #t2 = new col::_Set::•<core::num>();
final core::Set<core::num> #t2 = new _co::_Set::•<core::num>();
#t2.{core::Set::add}{Invariant}(3){(core::num) → core::bool};
#t2.{core::Set::add}{Invariant}(4){(core::num) → core::bool};
#t2.{core::Set::add}{Invariant}(5){(core::num) → core::bool};
} =>#t2;
dynamic dynamicSet3 = block {
final core::Set<core::int?> #t3 = new col::_Set::•<core::int?>();
final core::Set<core::int?> #t3 = new _co::_Set::•<core::int?>();
#t3.{core::Set::add}{Invariant}(6){(core::int?) → core::bool};
#t3.{core::Set::add}{Invariant}(7){(core::int?) → core::bool};
#t3.{core::Set::add}{Invariant}(8){(core::int?) → core::bool};
} =>#t3;
core::Iterable<core::int> iterableIntSet = block {
final core::Set<core::int> #t4 = new col::_Set::•<core::int>();
final core::Set<core::int> #t4 = new _co::_Set::•<core::int>();
#t4.{core::Set::add}{Invariant}(9){(core::int) → core::bool};
#t4.{core::Set::add}{Invariant}(10){(core::int) → core::bool};
#t4.{core::Set::add}{Invariant}(11){(core::int) → core::bool};
} =>#t4;
core::Set<core::int> intSet = block {
final core::Set<core::int> #t5 = new col::_Set::•<core::int>();
final core::Set<core::int> #t5 = new _co::_Set::•<core::int>();
#t5.{core::Set::add}{Invariant}(12){(core::int) → core::bool};
#t5.{core::Set::add}{Invariant}(13){(core::int) → core::bool};
#t5.{core::Set::add}{Invariant}(14){(core::int) → core::bool};
} =>#t5;
core::Set<core::int> set1 = block {
final core::Set<core::int> #t6 = new col::_Set::•<core::int>();
final core::Set<core::int> #t6 = new _co::_Set::•<core::int>();
{
synthesized core::Iterator<dynamic> :sync-for-iterator = (dynamicSet1 as{TypeError,ForDynamic} core::Iterable<dynamic>).{core::Iterable::iterator}{core::Iterator<dynamic>};
for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
@@ -71,7 +72,7 @@ static method useAddAll() → void {
} =>#t6;
self::expect(core::_GrowableList::generate<core::int>(15, (core::int i) → core::int => i).{core::Iterable::toSet}(){() → core::Set<core::int>}, set1);
core::Set<core::num> set2 = block {
final core::Set<core::num> #t13 = new col::_Set::•<core::num>();
final core::Set<core::num> #t13 = new _co::_Set::•<core::num>();
{
synthesized core::Iterator<dynamic> :sync-for-iterator = (dynamicSet1 as{TypeError,ForDynamic} core::Iterable<dynamic>).{core::Iterable::iterator}{core::Iterator<dynamic>};
for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
@@ -107,7 +108,7 @@ static method useAddAll() → void {
} =>#t13;
self::expect(core::_GrowableList::generate<core::num>(15, (core::int i) → core::int => i).{core::Iterable::toSet}(){() → core::Set<core::num>}, set2);
core::Set<core::int> set3 = block {
final core::Set<core::int> #t20 = new col::_Set::•<core::int>();
final core::Set<core::int> #t20 = new _co::_Set::•<core::int>();
{
synthesized core::Iterator<dynamic> :sync-for-iterator = (dynamicSet1 as{TypeError,ForDynamic} core::Iterable<dynamic>).{core::Iterable::iterator}{core::Iterator<dynamic>};
for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
@@ -152,13 +153,13 @@ static method useAddAll() → void {
self::expect(core::_GrowableList::generate<dynamic>(15, (core::int i) → core::int => i).{core::Iterable::toSet}(){() → core::Set<dynamic>}, set4);
{
core::Set<core::int> intSet1 = block {
final core::Set<core::int> #t28 = new col::_Set::•<core::int>();
final core::Set<core::int> #t28 = new _co::_Set::•<core::int>();
#t28.{core::Set::add}{Invariant}(0){(core::int) → core::bool};
#t28.{core::Set::add}{Invariant}(1){(core::int) → core::bool};
#t28.{core::Set::add}{Invariant}(2){(core::int) → core::bool};
} =>#t28;
core::Set<core::int> intSet2 = block {
final core::Set<core::int> #t29 = new col::_Set::•<core::int>();
final core::Set<core::int> #t29 = new _co::_Set::•<core::int>();
#t29.{core::Set::add}{Invariant}(3){(core::int) → core::bool};
#t29.{core::Set::add}{Invariant}(4){(core::int) → core::bool};
#t29.{core::Set::add}{Invariant}(5){(core::int) → core::bool};
@@ -172,37 +173,37 @@ static method useAddAll() → void {
}
static method useAddAllNullable() → void {
dynamic dynamicSet1 = block {
final core::Set<core::int> #t31 = new col::_Set::•<core::int>();
final core::Set<core::int> #t31 = new _co::_Set::•<core::int>();
#t31.{core::Set::add}{Invariant}(0){(core::int) → core::bool};
#t31.{core::Set::add}{Invariant}(1){(core::int) → core::bool};
#t31.{core::Set::add}{Invariant}(2){(core::int) → core::bool};
} =>#t31;
dynamic dynamicSet2 = block {
final core::Set<core::num> #t32 = new col::_Set::•<core::num>();
final core::Set<core::num> #t32 = new _co::_Set::•<core::num>();
#t32.{core::Set::add}{Invariant}(3){(core::num) → core::bool};
#t32.{core::Set::add}{Invariant}(4){(core::num) → core::bool};
#t32.{core::Set::add}{Invariant}(5){(core::num) → core::bool};
} =>#t32;
dynamic dynamicSet3 = block {
final core::Set<core::int?> #t33 = new col::_Set::•<core::int?>();
final core::Set<core::int?> #t33 = new _co::_Set::•<core::int?>();
#t33.{core::Set::add}{Invariant}(6){(core::int?) → core::bool};
#t33.{core::Set::add}{Invariant}(7){(core::int?) → core::bool};
#t33.{core::Set::add}{Invariant}(8){(core::int?) → core::bool};
} =>#t33;
core::Iterable<core::int>? iterableIntSet = true ?{core::Set<core::int>?} block {
final core::Set<core::int> #t34 = new col::_Set::•<core::int>();
final core::Set<core::int> #t34 = new _co::_Set::•<core::int>();
#t34.{core::Set::add}{Invariant}(9){(core::int) → core::bool};
#t34.{core::Set::add}{Invariant}(10){(core::int) → core::bool};
#t34.{core::Set::add}{Invariant}(11){(core::int) → core::bool};
} =>#t34 : null;
core::Set<core::int>? intSet = true ?{core::Set<core::int>?} block {
final core::Set<core::int> #t35 = new col::_Set::•<core::int>();
final core::Set<core::int> #t35 = new _co::_Set::•<core::int>();
#t35.{core::Set::add}{Invariant}(12){(core::int) → core::bool};
#t35.{core::Set::add}{Invariant}(13){(core::int) → core::bool};
#t35.{core::Set::add}{Invariant}(14){(core::int) → core::bool};
} =>#t35 : null;
core::Set<core::int> set1 = block {
final core::Set<core::int> #t36 = new col::_Set::•<core::int>();
final core::Set<core::int> #t36 = new _co::_Set::•<core::int>();
final core::Iterable<dynamic>? #t37 = dynamicSet1 as{TypeError,ForDynamic} core::Iterable<dynamic>?;
if(!(#t37 == null)) {
synthesized core::Iterator<dynamic> :sync-for-iterator = #t37{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
@@ -245,7 +246,7 @@ static method useAddAllNullable() → void {
} =>#t36;
self::expect(core::_GrowableList::generate<core::int>(15, (core::int i) → core::int => i).{core::Iterable::toSet}(){() → core::Set<core::int>}, set1);
core::Set<core::num> set2 = block {
final core::Set<core::num> #t48 = new col::_Set::•<core::num>();
final core::Set<core::num> #t48 = new _co::_Set::•<core::num>();
final core::Iterable<dynamic>? #t49 = dynamicSet1 as{TypeError,ForDynamic} core::Iterable<dynamic>?;
if(!(#t49 == null)) {
synthesized core::Iterator<dynamic> :sync-for-iterator = #t49{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
@@ -288,7 +289,7 @@ static method useAddAllNullable() → void {
} =>#t48;
self::expect(core::_GrowableList::generate<core::num>(15, (core::int i) → core::int => i).{core::Iterable::toSet}(){() → core::Set<core::num>}, set2);
core::Set<core::int> set3 = block {
final core::Set<core::int> #t60 = new col::_Set::•<core::int>();
final core::Set<core::int> #t60 = new _co::_Set::•<core::int>();
final core::Iterable<dynamic>? #t61 = dynamicSet1 as{TypeError,ForDynamic} core::Iterable<dynamic>?;
if(!(#t61 == null)) {
synthesized core::Iterator<dynamic> :sync-for-iterator = #t61{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
@@ -331,7 +332,7 @@ static method useAddAllNullable() → void {
} =>#t60;
self::expect(core::_GrowableList::generate<core::int>(15, (core::int i) → core::int => i).{core::Iterable::toSet}(){() → core::Set<core::int>}, set3);
core::Set<dynamic> set4 = block {
final core::Set<dynamic> #t72 = new col::_Set::•<dynamic>();
final core::Set<dynamic> #t72 = new _co::_Set::•<dynamic>();
final core::Iterable<dynamic>? #t73 = dynamicSet1 as{TypeError,ForDynamic} core::Iterable<dynamic>?;
if(!(#t73 == null))
#t72.{core::Set::addAll}{Invariant}(#t73{core::Iterable<dynamic>}){(core::Iterable<dynamic>) → void};
@@ -24,7 +24,7 @@ class MapFactorySpecializer extends BaseSpecializer {
),
_internalLinkedHashMapConstructor = assertNotNull(
coreTypes.index.getConstructor(
'dart:collection',
'dart:_compact_hash',
'_Map',
'',
),
@@ -25,7 +25,7 @@ class SetFactorySpecializer extends BaseSpecializer {
),
_internalLinkedHashSetConstructor = assertNotNull(
coreTypes.index.getConstructor(
'dart:collection',
'dart:_compact_hash',
'_Set',
'',
),
+9 -7
View File
@@ -75,6 +75,7 @@ class VmTarget extends Target {
List<String> get extraRequiredLibraries => const <String>[
'dart:async',
'dart:collection',
'dart:_compact_hash',
'dart:concurrent',
'dart:convert',
'dart:developer',
@@ -96,6 +97,9 @@ class VmTarget extends Target {
'dart:cli',
];
@override
bool mayDefineRestrictedType(Uri uri) => uri.isScheme('dart');
@override
List<String> get extraRequiredLibrariesPlatform => const <String>[];
@@ -131,9 +135,7 @@ class VmTarget extends Target {
@override
List<String> get extraIndexedLibraries => const <String>[
// TODO(askesc): When the VM supports set literals, we no longer
// need to index dart:collection, as it is only needed for desugaring of
// const sets. We can remove it from this list at that time.
"dart:_compact_hash",
"dart:collection",
// TODO(askesc): This is for the VM host endian optimization, which
// could possibly be done more cleanly after the VM no longer supports
@@ -438,24 +440,24 @@ class VmTarget extends Target {
@override
Class concreteMapLiteralClass(CoreTypes coreTypes) {
return _map ??= coreTypes.index.getClass('dart:collection', '_Map');
return _map ??= coreTypes.index.getClass('dart:_compact_hash', '_Map');
}
@override
Class concreteConstMapLiteralClass(CoreTypes coreTypes) {
return _constMap ??=
coreTypes.index.getClass('dart:collection', '_ConstMap');
coreTypes.index.getClass('dart:_compact_hash', '_ConstMap');
}
@override
Class concreteSetLiteralClass(CoreTypes coreTypes) {
return _set ??= coreTypes.index.getClass('dart:collection', '_Set');
return _set ??= coreTypes.index.getClass('dart:_compact_hash', '_Set');
}
@override
Class concreteConstSetLiteralClass(CoreTypes coreTypes) {
return _constSet ??=
coreTypes.index.getClass('dart:collection', '_ConstSet');
coreTypes.index.getClass('dart:_compact_hash', '_ConstSet');
}
@override
@@ -19,6 +19,7 @@ LoadingUnit(id=1, parent=0,
dart:developer
dart:convert
dart:concurrent
dart:_compact_hash
dart:collection
dart:async
#pkg/vm/testcases/transformations/deferred_loading/c.dart
@@ -11,7 +11,7 @@ class Element extends core::Object {
}
class InheritedElement extends self::Element {
[@vm.inferred-type.metadata=dart.collection::_Map<#lib::Element, dart.core::Object?>]
[@vm.inferred-type.metadata=dart._compact_hash::_Map<#lib::Element, dart.core::Object?>]
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:1]
final field core::Map<self::Element, core::Object?> _dependents;
synthetic constructor •() → self::InheritedElement
@@ -21,7 +21,7 @@ class InheritedElement extends self::Element {
[@vm.inferred-return-type.metadata=dart.core::Null? (value: null)]
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:2,getterSelectorId:3]
method setDependencies([@vm.inferred-arg-type.metadata=!] self::Element dependent, [@vm.inferred-arg-type.metadata=dart.core::_Smi?] core::Object? value) → void {
[@vm.call-site-attributes.metadata=receiverType:dart.core::Map<#lib::Element, dart.core::Object?>] [@vm.direct-call.metadata=dart.collection::__Map&_HashVMBase&MapMixin&_HashBase&_OperatorEqualsAndHashCode&_LinkedHashMapMixin.[]=] [@vm.inferred-type.metadata=!? (skip check)] [@vm.direct-call.metadata=#lib::InheritedElement._dependents] [@vm.inferred-type.metadata=dart.collection::_Map<#lib::Element, dart.core::Object?>] this.{self::InheritedElement::_dependents}{core::Map<self::Element, core::Object?>}.{core::Map::[]=}(dependent, value){(self::Element, core::Object?) → void};
[@vm.call-site-attributes.metadata=receiverType:dart.core::Map<#lib::Element, dart.core::Object?>] [@vm.direct-call.metadata=dart._compact_hash::__Map&_HashVMBase&MapMixin&_HashBase&_OperatorEqualsAndHashCode&_LinkedHashMapMixin.[]=] [@vm.inferred-type.metadata=!? (skip check)] [@vm.direct-call.metadata=#lib::InheritedElement._dependents] [@vm.inferred-type.metadata=dart._compact_hash::_Map<#lib::Element, dart.core::Object?>] this.{self::InheritedElement::_dependents}{core::Map<self::Element, core::Object?>}.{core::Map::[]=}(dependent, value){(self::Element, core::Object?) → void};
}
}
@@ -16,7 +16,7 @@ class _Attribute extends core::Object {
[@vm.inferred-return-type.metadata=#lib::_Attribute]
static method fromReader() → self::_Attribute {
final self::_AttributeName name = [@vm.direct-call.metadata=dart.collection::__ConstMap&_HashVMImmutableBase&MapMixin&_HashBase&_OperatorEqualsAndCanonicalHashCode&_LinkedHashMapMixin&_UnmodifiableMapMixin&_ImmutableLinkedHashMapMixin.[]] [@vm.inferred-type.metadata=#lib::_AttributeName? (skip check)] #C8.{core::Map::[]}(#C1){(core::Object?) → self::_AttributeName?}!;
final self::_AttributeName name = [@vm.direct-call.metadata=dart._compact_hash::__ConstMap&_HashVMImmutableBase&MapMixin&_HashBase&_OperatorEqualsAndCanonicalHashCode&_LinkedHashMapMixin&_UnmodifiableMapMixin&_ImmutableLinkedHashMapMixin.[]] [@vm.inferred-type.metadata=#lib::_AttributeName? (skip check)] #C8.{core::Map::[]}(#C1){(core::Object?) → self::_AttributeName?}!;
return new self::_Attribute::_();
}
}
@@ -16,7 +16,7 @@ class _Attribute extends core::Object {
[@vm.inferred-return-type.metadata=#lib::_Attribute]
static method fromReader() → self::_Attribute {
final core::bool name = [@vm.direct-call.metadata=dart.collection::__ConstSet&_HashVMImmutableBase&SetMixin&_HashBase&_OperatorEqualsAndCanonicalHashCode&_LinkedHashSetMixin&_UnmodifiableSetMixin&_ImmutableLinkedHashSetMixin.contains] [@vm.inferred-type.metadata=!? (skip check)] #C3.{core::Set::contains}(#C2){(core::Object?) → core::bool};
final core::bool name = [@vm.direct-call.metadata=dart._compact_hash::__ConstSet&_HashVMImmutableBase&SetMixin&_HashBase&_OperatorEqualsAndCanonicalHashCode&_LinkedHashSetMixin&_UnmodifiableSetMixin&_ImmutableLinkedHashSetMixin.contains] [@vm.inferred-type.metadata=!? (skip check)] #C3.{core::Set::contains}(#C2){(core::Object?) → core::bool};
return let final self::_AttributeName #t1 = #C8.{core::List::[]}(#C2){(core::int) → self::_AttributeName} in new self::_Attribute::_();
}
}
@@ -1,62 +1,63 @@
library #lib;
import self as self;
import "dart:core" as core;
import "dart:_compact_hash" as _co;
import "dart:collection" as col;
import "dart:collection";
import "dart:core";
[@vm.inferred-type.metadata=dart.collection::_Set<dynamic>]
static field core::Set<dynamic> globalSet = new col::_Set::•<dynamic>();
[@vm.inferred-type.metadata=dart._compact_hash::_Set<dynamic>]
static field core::Set<dynamic> globalSet = new _co::_Set::•<dynamic>();
[@vm.inferred-type.metadata=dart.collection::_CompactLinkedIdentityHashSet<dynamic>]
static field core::Set<dynamic> identitySet = [@vm.inferred-type.metadata=dart.collection::_CompactLinkedIdentityHashSet<dynamic>] col::LinkedHashSet::identity<dynamic>();
[@vm.inferred-type.metadata=dart._compact_hash::CompactLinkedIdentityHashSet<dynamic>]
static field core::Set<dynamic> identitySet = [@vm.inferred-type.metadata=dart._compact_hash::CompactLinkedIdentityHashSet<dynamic>] col::LinkedHashSet::identity<dynamic>();
[@vm.inferred-type.metadata=dart.collection::_Set<dart.core::String>]
static field core::Set<core::String> linkedSet = new col::_Set::•<core::String>();
[@vm.inferred-type.metadata=dart._compact_hash::_Set<dart.core::String>]
static field core::Set<core::String> linkedSet = new _co::_Set::•<core::String>();
[@vm.inferred-type.metadata=!]
static field core::Set<core::String> linkedIdentitySet = [@vm.inferred-type.metadata=!] col::LinkedHashSet::•<core::String>(#C1, #C2);
[@vm.inferred-type.metadata=dart.collection::_CompactLinkedCustomHashSet<dart.core::String>]
static field core::Set<core::String> linkedCustomSet = let final (core::String, core::String) → core::bool #t1 = (core::String a, core::String b) → core::bool => [@vm.inferred-type.metadata=dart.core::bool (receiver not int)] a =={core::String::==}{(core::Object) → core::bool} b in let final (core::String) → core::int #t2 = (core::String o) → core::int => [@vm.inferred-type.metadata=dart.core::_Smi] o.{core::String::hashCode}{core::int} in let final (dynamic) → core::bool #t3 = (dynamic o) → core::bool => true in [@vm.inferred-type.metadata=dart.collection::_CompactLinkedCustomHashSet<dart.core::String>] col::LinkedHashSet::•<core::String>(#t1, #t2, isValidKey: #t3);
[@vm.inferred-type.metadata=dart._compact_hash::CompactLinkedCustomHashSet<dart.core::String>]
static field core::Set<core::String> linkedCustomSet = let final (core::String, core::String) → core::bool #t1 = (core::String a, core::String b) → core::bool => [@vm.inferred-type.metadata=dart.core::bool (receiver not int)] a =={core::String::==}{(core::Object) → core::bool} b in let final (core::String) → core::int #t2 = (core::String o) → core::int => [@vm.inferred-type.metadata=dart.core::_Smi] o.{core::String::hashCode}{core::int} in let final (dynamic) → core::bool #t3 = (dynamic o) → core::bool => true in [@vm.inferred-type.metadata=dart._compact_hash::CompactLinkedCustomHashSet<dart.core::String>] col::LinkedHashSet::•<core::String>(#t1, #t2, isValidKey: #t3);
[@vm.inferred-type.metadata=dart.collection::_Map<dynamic, dynamic>]
static field core::Map<dynamic, dynamic> globalMap = [@vm.inferred-type.metadata=dart.collection::_Map<dynamic, dynamic>] core::Map::•<dynamic, dynamic>();
[@vm.inferred-type.metadata=dart._compact_hash::_Map<dynamic, dynamic>]
static field core::Map<dynamic, dynamic> globalMap = [@vm.inferred-type.metadata=dart._compact_hash::_Map<dynamic, dynamic>] core::Map::•<dynamic, dynamic>();
[@vm.inferred-type.metadata=dart.collection::_CompactLinkedIdentityHashMap<dynamic, dynamic>]
static field core::Map<dynamic, dynamic> identityMap = [@vm.inferred-type.metadata=dart.collection::_CompactLinkedIdentityHashMap<dynamic, dynamic>] col::LinkedHashMap::identity<dynamic, dynamic>();
[@vm.inferred-type.metadata=dart._compact_hash::CompactLinkedIdentityHashMap<dynamic, dynamic>]
static field core::Map<dynamic, dynamic> identityMap = [@vm.inferred-type.metadata=dart._compact_hash::CompactLinkedIdentityHashMap<dynamic, dynamic>] col::LinkedHashMap::identity<dynamic, dynamic>();
[@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView<dynamic, dynamic>]
static field core::Map<dynamic, dynamic> unmodifiableMap = [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView<dynamic, dynamic>] core::Map::unmodifiable<dynamic, dynamic>([@vm.inferred-type.metadata=dart.collection::_CompactLinkedIdentityHashMap<dynamic, dynamic>] self::identityMap);
static field core::Map<dynamic, dynamic> unmodifiableMap = [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView<dynamic, dynamic>] core::Map::unmodifiable<dynamic, dynamic>([@vm.inferred-type.metadata=dart._compact_hash::CompactLinkedIdentityHashMap<dynamic, dynamic>] self::identityMap);
[@vm.inferred-type.metadata=dart.collection::_Map<dynamic, dynamic>]
[@vm.inferred-type.metadata=dart._compact_hash::_Map<dynamic, dynamic>]
static field core::Map<dynamic, dynamic> globalMapLiteral = <dynamic, dynamic>{};
[@vm.inferred-type.metadata=dart.collection::_Map<dart.core::String, dart.core::String>]
static field core::Map<core::String, core::String> linkedMap = new col::_Map::•<core::String, core::String>();
[@vm.inferred-type.metadata=dart._compact_hash::_Map<dart.core::String, dart.core::String>]
static field core::Map<core::String, core::String> linkedMap = new _co::_Map::•<core::String, core::String>();
[@vm.inferred-type.metadata=!]
static field core::Map<core::String, core::String> linkedIdentityMap = [@vm.inferred-type.metadata=!] col::LinkedHashMap::•<core::String, core::String>(#C1, #C2);
[@vm.inferred-type.metadata=dart.collection::_CompactLinkedCustomHashMap<dart.core::String, dart.core::String>]
static field core::Map<core::String, core::String> linkedCustomMap = let final (core::String, core::String) → core::bool #t4 = (core::String a, core::String b) → core::bool => [@vm.inferred-type.metadata=dart.core::bool (receiver not int)] a =={core::String::==}{(core::Object) → core::bool} b in let final (core::String) → core::int #t5 = (core::String o) → core::int => [@vm.inferred-type.metadata=dart.core::_Smi] o.{core::String::hashCode}{core::int} in let final (dynamic) → core::bool #t6 = (dynamic o) → core::bool => true in [@vm.inferred-type.metadata=dart.collection::_CompactLinkedCustomHashMap<dart.core::String, dart.core::String>] col::LinkedHashMap::•<core::String, core::String>(#t4, #t5, isValidKey: #t6);
[@vm.inferred-type.metadata=dart._compact_hash::CompactLinkedCustomHashMap<dart.core::String, dart.core::String>]
static field core::Map<core::String, core::String> linkedCustomMap = let final (core::String, core::String) → core::bool #t4 = (core::String a, core::String b) → core::bool => [@vm.inferred-type.metadata=dart.core::bool (receiver not int)] a =={core::String::==}{(core::Object) → core::bool} b in let final (core::String) → core::int #t5 = (core::String o) → core::int => [@vm.inferred-type.metadata=dart.core::_Smi] o.{core::String::hashCode}{core::int} in let final (dynamic) → core::bool #t6 = (dynamic o) → core::bool => true in [@vm.inferred-type.metadata=dart._compact_hash::CompactLinkedCustomHashMap<dart.core::String, dart.core::String>] col::LinkedHashMap::•<core::String, core::String>(#t4, #t5, isValidKey: #t6);
[@vm.inferred-return-type.metadata=dart.core::Null? (value: null)]
static method main() → dynamic {
core::print([@vm.inferred-type.metadata=dart.collection::_Set<dynamic>] self::globalSet);
core::print([@vm.inferred-type.metadata=dart.collection::_CompactLinkedIdentityHashSet<dynamic>] self::identitySet);
core::print([@vm.inferred-type.metadata=dart.collection::_Set<dart.core::String>] self::linkedSet);
core::print([@vm.inferred-type.metadata=dart._compact_hash::_Set<dynamic>] self::globalSet);
core::print([@vm.inferred-type.metadata=dart._compact_hash::CompactLinkedIdentityHashSet<dynamic>] self::identitySet);
core::print([@vm.inferred-type.metadata=dart._compact_hash::_Set<dart.core::String>] self::linkedSet);
core::print([@vm.inferred-type.metadata=!] self::linkedIdentitySet);
core::print([@vm.inferred-type.metadata=dart.collection::_CompactLinkedCustomHashSet<dart.core::String>] self::linkedCustomSet);
core::print([@vm.inferred-type.metadata=dart.collection::_Map<dynamic, dynamic>] self::globalMap);
core::print([@vm.inferred-type.metadata=dart.collection::_Map<dynamic, dynamic>] self::globalMapLiteral);
core::print([@vm.inferred-type.metadata=dart.collection::_CompactLinkedIdentityHashMap<dynamic, dynamic>] self::identityMap);
core::print([@vm.inferred-type.metadata=dart._compact_hash::CompactLinkedCustomHashSet<dart.core::String>] self::linkedCustomSet);
core::print([@vm.inferred-type.metadata=dart._compact_hash::_Map<dynamic, dynamic>] self::globalMap);
core::print([@vm.inferred-type.metadata=dart._compact_hash::_Map<dynamic, dynamic>] self::globalMapLiteral);
core::print([@vm.inferred-type.metadata=dart._compact_hash::CompactLinkedIdentityHashMap<dynamic, dynamic>] self::identityMap);
core::print([@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView<dynamic, dynamic>] self::unmodifiableMap);
core::print([@vm.inferred-type.metadata=dart.collection::_Map<dart.core::String, dart.core::String>] self::linkedMap);
core::print([@vm.inferred-type.metadata=dart._compact_hash::_Map<dart.core::String, dart.core::String>] self::linkedMap);
core::print([@vm.inferred-type.metadata=!] self::linkedIdentityMap);
core::print([@vm.inferred-type.metadata=dart.collection::_CompactLinkedCustomHashMap<dart.core::String, dart.core::String>] self::linkedCustomMap);
core::print([@vm.inferred-type.metadata=dart._compact_hash::CompactLinkedCustomHashMap<dart.core::String, dart.core::String>] self::linkedCustomMap);
}
constants {
#C1 = static-tearoff core::identical
+235 -235
View File
@@ -13,22 +13,22 @@ namespace dart {
// debug mode to get the correct fingerprint from the mismatch error.
#define OTHER_RECOGNIZED_LIST(V) \
V(AsyncLibrary, _FutureListener, handleValue, FutureListenerHandleValue, \
0xec08b9f2) \
0xaa83f1d2) \
V(AsyncLibrary, _SuspendState, get:_functionData, \
SuspendState_getFunctionData, 0x7272eaae) \
SuspendState_getFunctionData, 0x79c36a6d) \
V(AsyncLibrary, _SuspendState, set:_functionData, \
SuspendState_setFunctionData, 0x2b4950eb) \
SuspendState_setFunctionData, 0x3299d0aa) \
V(AsyncLibrary, _SuspendState, get:_thenCallback, \
SuspendState_getThenCallback, 0x2b81e561) \
SuspendState_getThenCallback, 0x14fb604a) \
V(AsyncLibrary, _SuspendState, set:_thenCallback, \
SuspendState_setThenCallback, 0x751f9d1e) \
SuspendState_setThenCallback, 0x5e991807) \
V(AsyncLibrary, _SuspendState, get:_errorCallback, \
SuspendState_getErrorCallback, 0xaeacef2f) \
SuspendState_getErrorCallback, 0xc0a87747) \
V(AsyncLibrary, _SuspendState, set:_errorCallback, \
SuspendState_setErrorCallback, 0xc3ebebec) \
V(AsyncLibrary, _SuspendState, _clone, SuspendState_clone, 0xadfd28e0) \
V(AsyncLibrary, _SuspendState, _resume, SuspendState_resume, 0x5d5d6cc9) \
V(ConvertLibrary, _Utf8Decoder, _scan, Utf8DecoderScan, 0xb9801ae2) \
SuspendState_setErrorCallback, 0xd5e77404) \
V(AsyncLibrary, _SuspendState, _clone, SuspendState_clone, 0x751294d7) \
V(AsyncLibrary, _SuspendState, _resume, SuspendState_resume, 0x48d39768) \
V(ConvertLibrary, _Utf8Decoder, _scan, Utf8DecoderScan, 0x903cbc3e) \
V(CoreLibrary, ::, identical, ObjectIdentical, 0x03f96b55) \
V(CoreLibrary, Object, Object., ObjectConstructor, 0xab6d6cf2) \
V(CoreLibrary, _Array, [], ObjectArrayGetIndexed, 0x78d7e092) \
@@ -75,128 +75,128 @@ namespace dart {
V(CoreLibrary, _Smi, get:hashCode, Smi_hashCode, 0x75c3b512) \
V(CoreLibrary, _Mint, get:hashCode, Mint_hashCode, 0x75c3b512) \
V(CoreLibrary, _Double, get:hashCode, Double_hashCode, 0x75c3b8d3) \
V(CollectionLibrary, _HashVMBase, get:_index, LinkedHashBase_getIndex, \
0x88095a1c) \
V(CollectionLibrary, _HashVMBase, set:_index, LinkedHashBase_setIndex, \
0xa2a17c58) \
V(CollectionLibrary, _HashVMBase, get:_data, LinkedHashBase_getData, \
0x2c6e46c3) \
V(CollectionLibrary, _HashVMBase, set:_data, LinkedHashBase_setData, \
0x40dad7ff) \
V(CollectionLibrary, _HashVMBase, get:_usedData, LinkedHashBase_getUsedData, \
0x46eb7c2d) \
V(CollectionLibrary, _HashVMBase, set:_usedData, LinkedHashBase_setUsedData, \
0xb3ab6fe9) \
V(CollectionLibrary, _HashVMBase, get:_hashMask, LinkedHashBase_getHashMask, \
0x4ef1afdc) \
V(CollectionLibrary, _HashVMBase, set:_hashMask, LinkedHashBase_setHashMask, \
0xbbb1a398) \
V(CollectionLibrary, _HashVMBase, get:_deletedKeys, \
LinkedHashBase_getDeletedKeys, 0x50f0ace0) \
V(CollectionLibrary, _HashVMBase, set:_deletedKeys, \
LinkedHashBase_setDeletedKeys, 0xbdb0a09c) \
V(CollectionLibrary, _HashVMImmutableBase, get:_data, \
ImmutableLinkedHashBase_getData, 0x2c6e46c3) \
V(CollectionLibrary, _HashVMImmutableBase, get:_indexNullable, \
ImmutableLinkedHashBase_getIndex, 0xfd6a643b) \
V(CollectionLibrary, _HashVMImmutableBase, set:_index, \
ImmutableLinkedHashBase_setIndexStoreRelease, 0xa2a17c58) \
V(CompactHashLibrary, _HashVMBase, get:_index, LinkedHashBase_getIndex, \
0xb49e7210) \
V(CompactHashLibrary, _HashVMBase, set:_index, LinkedHashBase_setIndex, \
0xcf36944c) \
V(CompactHashLibrary, _HashVMBase, get:_data, LinkedHashBase_getData, \
0x372bf7ad) \
V(CompactHashLibrary, _HashVMBase, set:_data, LinkedHashBase_setData, \
0x4b9888e9) \
V(CompactHashLibrary, _HashVMBase, get:_usedData, \
LinkedHashBase_getUsedData, 0x74808f38) \
V(CompactHashLibrary, _HashVMBase, set:_usedData, \
LinkedHashBase_setUsedData, 0xe14082f4) \
V(CompactHashLibrary, _HashVMBase, get:_hashMask, \
LinkedHashBase_getHashMask, 0x53cd6dce) \
V(CompactHashLibrary, _HashVMBase, set:_hashMask, \
LinkedHashBase_setHashMask, 0xc08d618a) \
V(CompactHashLibrary, _HashVMBase, get:_deletedKeys, \
LinkedHashBase_getDeletedKeys, 0x75eeb895) \
V(CompactHashLibrary, _HashVMBase, set:_deletedKeys, \
LinkedHashBase_setDeletedKeys, 0xe2aeac51) \
V(CompactHashLibrary, _HashVMImmutableBase, get:_data, \
ImmutableLinkedHashBase_getData, 0x372bf7ad) \
V(CompactHashLibrary, _HashVMImmutableBase, get:_indexNullable, \
ImmutableLinkedHashBase_getIndex, 0xfe7649ae) \
V(CompactHashLibrary, _HashVMImmutableBase, set:_index, \
ImmutableLinkedHashBase_setIndexStoreRelease, 0xcf36944c) \
V(DeveloperLibrary, ::, get:extensionStreamHasListener, \
ExtensionStreamHasListener, 0xfa975305) \
V(DeveloperLibrary, ::, debugger, Debugger, 0xf0aaff14) \
V(FfiLibrary, _NativeFinalizer, get:_callback, NativeFinalizer_getCallback, \
0x5c965d35) \
0x7cf2a7fa) \
V(FfiLibrary, _NativeFinalizer, set:_callback, NativeFinalizer_setCallback, \
0xb1055132) \
V(FfiLibrary, ::, _abi, FfiAbi, 0x7c2d9fb5) \
V(FfiLibrary, ::, _ffiCall, FfiCall, 0x610a5d82) \
0xd1619bf7) \
V(FfiLibrary, ::, _abi, FfiAbi, 0x4d633e6c) \
V(FfiLibrary, ::, _ffiCall, FfiCall, 0x5c807fed) \
V(FfiLibrary, ::, _nativeCallbackFunction, FfiNativeCallbackFunction, \
0x3fd896dc) \
0x387b4313) \
V(FfiLibrary, ::, _nativeAsyncCallbackFunction, \
FfiNativeAsyncCallbackFunction, 0xbeb62bd9) \
FfiNativeAsyncCallbackFunction, 0xbdd1a333) \
V(FfiLibrary, ::, _nativeIsolateLocalCallbackFunction, \
FfiNativeIsolateLocalCallbackFunction, 0x03d3193f) \
V(FfiLibrary, ::, _loadAbiSpecificInt, FfiLoadAbiSpecificInt, 0x77ead473) \
FfiNativeIsolateLocalCallbackFunction, 0x21b66eba) \
V(FfiLibrary, ::, _loadAbiSpecificInt, FfiLoadAbiSpecificInt, 0x6abf6ce5) \
V(FfiLibrary, ::, _loadAbiSpecificIntAtIndex, FfiLoadAbiSpecificIntAtIndex, \
0xaaab3b82) \
V(FfiLibrary, ::, _loadInt8, FfiLoadInt8, 0x0ee7cbd7) \
V(FfiLibrary, ::, _loadInt16, FfiLoadInt16, 0xec271d2e) \
V(FfiLibrary, ::, _loadInt32, FfiLoadInt32, 0xee052bc4) \
V(FfiLibrary, ::, _loadInt64, FfiLoadInt64, 0xded2aba4) \
V(FfiLibrary, ::, _loadUint8, FfiLoadUint8, 0xe13108d2) \
V(FfiLibrary, ::, _loadUint16, FfiLoadUint16, 0x0cb948eb) \
V(FfiLibrary, ::, _loadUint32, FfiLoadUint32, 0xf6517c56) \
V(FfiLibrary, ::, _loadUint64, FfiLoadUint64, 0x04e8e9cd) \
V(FfiLibrary, ::, _loadFloat, FfiLoadFloat, 0xf8bc6c9d) \
V(FfiLibrary, ::, _loadFloatUnaligned, FfiLoadFloatUnaligned, 0xc8abc83f) \
V(FfiLibrary, ::, _loadDouble, FfiLoadDouble, 0xf6efae59) \
V(FfiLibrary, ::, _loadDoubleUnaligned, FfiLoadDoubleUnaligned, 0xc981a579) \
V(FfiLibrary, ::, _loadPointer, FfiLoadPointer, 0x99eaf904) \
V(FfiLibrary, ::, _storeAbiSpecificInt, FfiStoreAbiSpecificInt, 0xc6ec40c1) \
0xc188d9b4) \
V(FfiLibrary, ::, _loadInt8, FfiLoadInt8, 0xe4acf678) \
V(FfiLibrary, ::, _loadInt16, FfiLoadInt16, 0xefe482c4) \
V(FfiLibrary, ::, _loadInt32, FfiLoadInt32, 0xea00adeb) \
V(FfiLibrary, ::, _loadInt64, FfiLoadInt64, 0xef97e83a) \
V(FfiLibrary, ::, _loadUint8, FfiLoadUint8, 0x07c41993) \
V(FfiLibrary, ::, _loadUint16, FfiLoadUint16, 0x0608f9f3) \
V(FfiLibrary, ::, _loadUint32, FfiLoadUint32, 0x0b7025a8) \
V(FfiLibrary, ::, _loadUint64, FfiLoadUint64, 0x0d0d244e) \
V(FfiLibrary, ::, _loadFloat, FfiLoadFloat, 0xd16bbb37) \
V(FfiLibrary, ::, _loadFloatUnaligned, FfiLoadFloatUnaligned, 0xee4990db) \
V(FfiLibrary, ::, _loadDouble, FfiLoadDouble, 0xeaad7aeb) \
V(FfiLibrary, ::, _loadDoubleUnaligned, FfiLoadDoubleUnaligned, 0xf5f51fa2) \
V(FfiLibrary, ::, _loadPointer, FfiLoadPointer, 0x8a1cfd98) \
V(FfiLibrary, ::, _storeAbiSpecificInt, FfiStoreAbiSpecificInt, 0xaa7301ed) \
V(FfiLibrary, ::, _storeAbiSpecificIntAtIndex, \
FfiStoreAbiSpecificIntAtIndex, 0x5b77195f) \
V(FfiLibrary, ::, _storeInt8, FfiStoreInt8, 0xdf339b0d) \
V(FfiLibrary, ::, _storeInt16, FfiStoreInt16, 0xd830df33) \
V(FfiLibrary, ::, _storeInt32, FfiStoreInt32, 0xfbc9185e) \
V(FfiLibrary, ::, _storeInt64, FfiStoreInt64, 0xf1b6f97b) \
V(FfiLibrary, ::, _storeUint8, FfiStoreUint8, 0x0550bef7) \
V(FfiLibrary, ::, _storeUint16, FfiStoreUint16, 0xe2e096df) \
V(FfiLibrary, ::, _storeUint32, FfiStoreUint32, 0xe5bad4c6) \
V(FfiLibrary, ::, _storeUint64, FfiStoreUint64, 0xe2bc1e3a) \
V(FfiLibrary, ::, _storeFloat, FfiStoreFloat, 0x6467d8be) \
V(FfiLibrary, ::, _storeFloatUnaligned, FfiStoreFloatUnaligned, 0x5fed7a43) \
V(FfiLibrary, ::, _storeDouble, FfiStoreDouble, 0x427c74a4) \
FfiStoreAbiSpecificIntAtIndex, 0x258c60d4) \
V(FfiLibrary, ::, _storeInt8, FfiStoreInt8, 0xeea23e04) \
V(FfiLibrary, ::, _storeInt16, FfiStoreInt16, 0xdb5cf1d3) \
V(FfiLibrary, ::, _storeInt32, FfiStoreInt32, 0xd4dab0b0) \
V(FfiLibrary, ::, _storeInt64, FfiStoreInt64, 0x05d6cb79) \
V(FfiLibrary, ::, _storeUint8, FfiStoreUint8, 0x01c04301) \
V(FfiLibrary, ::, _storeUint16, FfiStoreUint16, 0x130c90a5) \
V(FfiLibrary, ::, _storeUint32, FfiStoreUint32, 0x1009830c) \
V(FfiLibrary, ::, _storeUint64, FfiStoreUint64, 0x097ed239) \
V(FfiLibrary, ::, _storeFloat, FfiStoreFloat, 0x546dec6e) \
V(FfiLibrary, ::, _storeFloatUnaligned, FfiStoreFloatUnaligned, 0x502339d2) \
V(FfiLibrary, ::, _storeDouble, FfiStoreDouble, 0x4e77b771) \
V(FfiLibrary, ::, _storeDoubleUnaligned, FfiStoreDoubleUnaligned, \
0x3db1bf9b) \
V(FfiLibrary, ::, _storePointer, FfiStorePointer, 0x8b4bcd59) \
V(FfiLibrary, ::, _fromAddress, FfiFromAddress, 0x81010e21) \
0x49ce588e) \
V(FfiLibrary, ::, _storePointer, FfiStorePointer, 0xa08094f1) \
V(FfiLibrary, ::, _fromAddress, FfiFromAddress, 0x941575ee) \
V(FfiLibrary, Pointer, get:address, FfiGetAddress, 0x7cc16ffe) \
V(FfiLibrary, Native, _addressOf, FfiNativeAddressOf, 0x83966d9d) \
V(FfiLibrary, Native, _addressOf, FfiNativeAddressOf, 0x7f8597d3) \
V(FfiLibrary, ::, _asExternalTypedDataInt8, FfiAsExternalTypedDataInt8, \
0x766cf299) \
0x5dc718ce) \
V(FfiLibrary, ::, _asExternalTypedDataInt16, FfiAsExternalTypedDataInt16, \
0xd07fe5c7) \
0xd3655dc5) \
V(FfiLibrary, ::, _asExternalTypedDataInt32, FfiAsExternalTypedDataInt32, \
0x38077547) \
0x33a11910) \
V(FfiLibrary, ::, _asExternalTypedDataInt64, FfiAsExternalTypedDataInt64, \
0xaf8d33fc) \
0xb8cb53ac) \
V(FfiLibrary, ::, _asExternalTypedDataUint8, FfiAsExternalTypedDataUint8, \
0x35057435) \
0x39e68357) \
V(FfiLibrary, ::, _asExternalTypedDataUint16, FfiAsExternalTypedDataUint16, \
0x89880a3b) \
0xa534cb17) \
V(FfiLibrary, ::, _asExternalTypedDataUint32, FfiAsExternalTypedDataUint32, \
0xd255c842) \
0xaee39c37) \
V(FfiLibrary, ::, _asExternalTypedDataUint64, FfiAsExternalTypedDataUint64, \
0x06a15dc6) \
0xfe31e70a) \
V(FfiLibrary, ::, _asExternalTypedDataFloat, FfiAsExternalTypedDataFloat, \
0x6f294a0d) \
0x5469007d) \
V(FfiLibrary, ::, _asExternalTypedDataDouble, FfiAsExternalTypedDataDouble, \
0x40b0c5e2) \
V(FfiLibrary, ::, _memCopy, MemCopy, 0x27323056) \
0x423c204f) \
V(FfiLibrary, ::, _memCopy, MemCopy, 0x51939aa6) \
V(FfiLibrary, ::, _checkNotDeeplyImmutable, CheckNotDeeplyImmutable, \
0x56383704) \
0x34e4da90) \
V(InternalLibrary, ClassID, getID, ClassIDgetID, 0xdc6e70ca) \
V(InternalLibrary, ::, _nativeEffect, NativeEffect, 0x5360b6d1) \
V(InternalLibrary, ::, _nativeEffect, NativeEffect, 0x61c2f399) \
V(InternalLibrary, ::, reachabilityFence, ReachabilityFence, 0x72f213bf) \
V(InternalLibrary, ::, get:has63BitSmis, Has63BitSmis, 0xf5fe3f31) \
V(InternalLibrary, ::, copyRangeFromUint8ListToOneByteString, \
CopyRangeFromUint8ListToOneByteString, 0xcc3444c2) \
V(InternalLibrary, FinalizerBase, get:_allEntries, \
FinalizerBase_getAllEntries, 0xf022daab) \
FinalizerBase_getAllEntries, 0xf4e8b525) \
V(InternalLibrary, FinalizerBase, set:_allEntries, \
FinalizerBase_setAllEntries, 0x8eec0928) \
FinalizerBase_setAllEntries, 0x93b1e3a2) \
V(InternalLibrary, FinalizerBase, get:_detachments, \
FinalizerBase_getDetachments, 0x2f47f776) \
FinalizerBase_getDetachments, 0x2e8e08fa) \
V(InternalLibrary, FinalizerBase, set:_detachments, \
FinalizerBase_setDetachments, 0x78720633) \
FinalizerBase_setDetachments, 0x77b817b7) \
V(InternalLibrary, FinalizerBase, _exchangeEntriesCollectedWithNull, \
FinalizerBase_exchangeEntriesCollectedWithNull, 0x6c740d3b) \
FinalizerBase_exchangeEntriesCollectedWithNull, 0x7633c339) \
V(InternalLibrary, FinalizerBase, _setIsolate, FinalizerBase_setIsolate, \
0xbcdac792) \
0xc95e4a30) \
V(InternalLibrary, FinalizerBase, get:_isolateFinalizers, \
FinalizerBase_getIsolateFinalizers, 0x70d8272c) \
FinalizerBase_getIsolateFinalizers, 0x572a4340) \
V(InternalLibrary, FinalizerBase, set:_isolateFinalizers, \
FinalizerBase_setIsolateFinalizers, 0xb3c95529) \
FinalizerBase_setIsolateFinalizers, 0x9a1b713d) \
V(InternalLibrary, FinalizerEntry, allocate, FinalizerEntry_allocate, \
0xe09dc0b8) \
V(InternalLibrary, FinalizerEntry, get:value, FinalizerEntry_getValue, \
@@ -219,19 +219,19 @@ namespace dart {
0x56ff3b70) \
V(MathLibrary, ::, min, MathMin, 0x63eb7469) \
V(MathLibrary, ::, max, MathMax, 0xf9320c82) \
V(MathLibrary, ::, _doublePow, MathDoublePow, 0x428b8405) \
V(MathLibrary, ::, _intPow, MathIntPow, 0xab39e81a) \
V(MathLibrary, ::, _sin, MathSin, 0x17bdb243) \
V(MathLibrary, ::, _cos, MathCos, 0xf4776585) \
V(MathLibrary, ::, _tan, MathTan, 0xeafd3d77) \
V(MathLibrary, ::, _asin, MathAsin, 0x29c7bdde) \
V(MathLibrary, ::, _acos, MathAcos, 0x1fed891b) \
V(MathLibrary, ::, _atan, MathAtan, 0x10dd4932) \
V(MathLibrary, ::, _atan2, MathAtan2, 0x58b7d993) \
V(MathLibrary, ::, _sqrt, MathSqrt, 0x02fb1bd0) \
V(MathLibrary, ::, _exp, MathExp, 0x00d7e810) \
V(MathLibrary, ::, _log, MathLog, 0x09916ca2) \
V(NativeWrappersLibrary, ::, _getNativeField, GetNativeField, 0x9ff68786) \
V(MathLibrary, ::, _doublePow, MathDoublePow, 0x424e2227) \
V(MathLibrary, ::, _intPow, MathIntPow, 0x9a0d648c) \
V(MathLibrary, ::, _sin, MathSin, 0x101882d8) \
V(MathLibrary, ::, _cos, MathCos, 0xf91585da) \
V(MathLibrary, ::, _tan, MathTan, 0xf720c4ea) \
V(MathLibrary, ::, _asin, MathAsin, 0xfe7986cb) \
V(MathLibrary, ::, _acos, MathAcos, 0x174c6974) \
V(MathLibrary, ::, _atan, MathAtan, 0x1ae3f717) \
V(MathLibrary, ::, _atan2, MathAtan2, 0x531004a9) \
V(MathLibrary, ::, _sqrt, MathSqrt, 0x1f167f7a) \
V(MathLibrary, ::, _exp, MathExp, 0x02565a46) \
V(MathLibrary, ::, _log, MathLog, 0x106c0978) \
V(NativeWrappersLibrary, ::, _getNativeField, GetNativeField, 0x8a67a22d) \
V(TypedDataLibrary, _Int8List, [], Int8ArrayGetIndexed, 0x23133682) \
V(TypedDataLibrary, _ExternalInt8Array, [], ExternalInt8ArrayGetIndexed, \
0x23133682) \
@@ -304,111 +304,111 @@ namespace dart {
ExternalInt32x4ArrayGetIndexed, 0x4959642b) \
V(TypedDataLibrary, _Int32x4ArrayView, [], Int32x4ArrayViewGetIndexed, \
0x4959642b) \
V(TypedDataLibrary, _TypedList, _getInt8, TypedList_GetInt8, 0x1606c835) \
V(TypedDataLibrary, _TypedList, _getUint8, TypedList_GetUint8, 0x1762ea2b) \
V(TypedDataLibrary, _TypedList, _getInt16, TypedList_GetInt16, 0x2e238250) \
V(TypedDataLibrary, _TypedList, _getUint16, TypedList_GetUint16, 0x2fa4e2ba) \
V(TypedDataLibrary, _TypedList, _getInt32, TypedList_GetInt32, 0x18fb190b) \
V(TypedDataLibrary, _TypedList, _getUint32, TypedList_GetUint32, 0x19405a7c) \
V(TypedDataLibrary, _TypedList, _getInt64, TypedList_GetInt64, 0xf643ac00) \
V(TypedDataLibrary, _TypedList, _getUint64, TypedList_GetUint64, 0x2c3e655a) \
V(TypedDataLibrary, _TypedList, _getInt8, TypedList_GetInt8, 0x26d42e4c) \
V(TypedDataLibrary, _TypedList, _getUint8, TypedList_GetUint8, 0xf58cab06) \
V(TypedDataLibrary, _TypedList, _getInt16, TypedList_GetInt16, 0xffbc3275) \
V(TypedDataLibrary, _TypedList, _getUint16, TypedList_GetUint16, 0xfa3e6ed7) \
V(TypedDataLibrary, _TypedList, _getInt32, TypedList_GetInt32, 0x30684c92) \
V(TypedDataLibrary, _TypedList, _getUint32, TypedList_GetUint32, 0x252cc660) \
V(TypedDataLibrary, _TypedList, _getInt64, TypedList_GetInt64, 0x2c2f44e0) \
V(TypedDataLibrary, _TypedList, _getUint64, TypedList_GetUint64, 0x2f85e64b) \
V(TypedDataLibrary, _TypedList, _getFloat32, TypedList_GetFloat32, \
0xe8d98d08) \
0xf2b3f49c) \
V(TypedDataLibrary, _TypedList, _getFloat64, TypedList_GetFloat64, \
0xf80d2235) \
0xd8edbf39) \
V(TypedDataLibrary, _TypedList, _getFloat32x4, TypedList_GetFloat32x4, \
0xaf0ff8e6) \
0x8535083e) \
V(TypedDataLibrary, _TypedList, _getFloat64x2, TypedList_GetFloat64x2, \
0x544018c1) \
0x601cfc98) \
V(TypedDataLibrary, _TypedList, _getInt32x4, TypedList_GetInt32x4, \
0x5556600c) \
V(TypedDataLibrary, _TypedList, _setInt8, TypedList_SetInt8, 0xe16c2fa3) \
V(TypedDataLibrary, _TypedList, _setUint8, TypedList_SetUint8, 0xaf3ca349) \
V(TypedDataLibrary, _TypedList, _setInt16, TypedList_SetInt16, 0xbac92c28) \
V(TypedDataLibrary, _TypedList, _setUint16, TypedList_SetUint16, 0xce053450) \
V(TypedDataLibrary, _TypedList, _setInt32, TypedList_SetInt32, 0xbdbd9741) \
V(TypedDataLibrary, _TypedList, _setUint32, TypedList_SetUint32, 0xb9498fb3) \
V(TypedDataLibrary, _TypedList, _setInt64, TypedList_SetInt64, 0xc8b03b7b) \
V(TypedDataLibrary, _TypedList, _setUint64, TypedList_SetUint64, 0xda2a1e06) \
0x5492ada5) \
V(TypedDataLibrary, _TypedList, _setInt8, TypedList_SetInt8, 0xc407fda1) \
V(TypedDataLibrary, _TypedList, _setUint8, TypedList_SetUint8, 0xe1bade7c) \
V(TypedDataLibrary, _TypedList, _setInt16, TypedList_SetInt16, 0xb419c6ad) \
V(TypedDataLibrary, _TypedList, _setUint16, TypedList_SetUint16, 0xa7231704) \
V(TypedDataLibrary, _TypedList, _setInt32, TypedList_SetInt32, 0xb649e136) \
V(TypedDataLibrary, _TypedList, _setUint32, TypedList_SetUint32, 0xbe067c9d) \
V(TypedDataLibrary, _TypedList, _setInt64, TypedList_SetInt64, 0xd893ceb9) \
V(TypedDataLibrary, _TypedList, _setUint64, TypedList_SetUint64, 0xb69598f1) \
V(TypedDataLibrary, _TypedList, _setFloat32, TypedList_SetFloat32, \
0x2f1919e1) \
0x134728fa) \
V(TypedDataLibrary, _TypedList, _setFloat64, TypedList_SetFloat64, \
0x233ce4d3) \
0x0c2e6726) \
V(TypedDataLibrary, _TypedList, _setFloat32x4, TypedList_SetFloat32x4, \
0x38a9155b) \
0x3dc17446) \
V(TypedDataLibrary, _TypedList, _setFloat64x2, TypedList_SetFloat64x2, \
0xbacdc340) \
0x90fdf042) \
V(TypedDataLibrary, _TypedList, _setInt32x4, TypedList_SetInt32x4, \
0x5ccbee5c) \
V(TypedDataLibrary, ByteData, ., ByteDataFactory, 0x0f140a3b) \
0x5f4a7491) \
V(TypedDataLibrary, ByteData, ., ByteDataFactory, 0x9f5fcfc3) \
V(TypedDataLibrary, _ByteDataView, get:offsetInBytes, \
ByteDataViewOffsetInBytes, 0x60b1da6c) \
V(TypedDataLibrary, _ByteDataView, get:_typedData, ByteDataViewTypedData, \
0xb9b44479) \
0xfec7ba91) \
V(TypedDataLibrary, _TypedListView, get:offsetInBytes, \
TypedDataViewOffsetInBytes, 0x60b1da6c) \
V(TypedDataLibrary, _TypedListView, get:_typedData, TypedDataViewTypedData, \
0xb9b44479) \
0xfec7ba91) \
V(TypedDataLibrary, _ByteDataView, ._, TypedData_ByteDataView_factory, \
0x3169ff7d) \
0xee06a642) \
V(TypedDataLibrary, _Int8ArrayView, ._, TypedData_Int8ArrayView_factory, \
0x4438fdcb) \
0x62af12b2) \
V(TypedDataLibrary, _Uint8ArrayView, ._, TypedData_Uint8ArrayView_factory, \
0x95e37496) \
0x743ef52f) \
V(TypedDataLibrary, _Uint8ClampedArrayView, ._, \
TypedData_Uint8ClampedArrayView_factory, 0x051c646a) \
TypedData_Uint8ClampedArrayView_factory, 0x0a86ebcf) \
V(TypedDataLibrary, _Int16ArrayView, ._, TypedData_Int16ArrayView_factory, \
0x48f0ffdc) \
0xd58d175f) \
V(TypedDataLibrary, _Uint16ArrayView, ._, TypedData_Uint16ArrayView_factory, \
0x9fdbb233) \
0x5de67481) \
V(TypedDataLibrary, _Int32ArrayView, ._, TypedData_Int32ArrayView_factory, \
0xe2cc967a) \
0x187f51da) \
V(TypedDataLibrary, _Uint32ArrayView, ._, TypedData_Uint32ArrayView_factory, \
0x8665a6a2) \
0xb319a8d6) \
V(TypedDataLibrary, _Int64ArrayView, ._, TypedData_Int64ArrayView_factory, \
0x12aa3ab0) \
0xf5fb900c) \
V(TypedDataLibrary, _Uint64ArrayView, ._, TypedData_Uint64ArrayView_factory, \
0x25a95afe) \
0xa35ed807) \
V(TypedDataLibrary, _Float32ArrayView, ._, \
TypedData_Float32ArrayView_factory, 0xdc797845) \
TypedData_Float32ArrayView_factory, 0x89e4ecdf) \
V(TypedDataLibrary, _Float64ArrayView, ._, \
TypedData_Float64ArrayView_factory, 0xcb594118) \
TypedData_Float64ArrayView_factory, 0x0562ef6d) \
V(TypedDataLibrary, _Float32x4ArrayView, ._, \
TypedData_Float32x4ArrayView_factory, 0x66419ac1) \
TypedData_Float32x4ArrayView_factory, 0x0f97516a) \
V(TypedDataLibrary, _Int32x4ArrayView, ._, \
TypedData_Int32x4ArrayView_factory, 0x04934906) \
TypedData_Int32x4ArrayView_factory, 0x918335c2) \
V(TypedDataLibrary, _Float64x2ArrayView, ._, \
TypedData_Float64x2ArrayView_factory, 0x42c547a5) \
TypedData_Float64x2ArrayView_factory, 0x14fa6c01) \
V(TypedDataLibrary, _UnmodifiableByteDataView, ._, \
TypedData_UnmodifiableByteDataView_factory, 0x9ae1040c) \
TypedData_UnmodifiableByteDataView_factory, 0xf837748b) \
V(TypedDataLibrary, _UnmodifiableInt8ArrayView, ._, \
TypedData_UnmodifiableInt8ArrayView_factory, 0x4f0e318b) \
TypedData_UnmodifiableInt8ArrayView_factory, 0x5ea61aa0) \
V(TypedDataLibrary, _UnmodifiableUint8ArrayView, ._, \
TypedData_UnmodifiableUint8ArrayView_factory, 0x442b7c4a) \
TypedData_UnmodifiableUint8ArrayView_factory, 0x79b3d901) \
V(TypedDataLibrary, _UnmodifiableUint8ClampedArrayView, ._, \
TypedData_UnmodifiableUint8ClampedArrayView_factory, 0x6a3bdd0e) \
TypedData_UnmodifiableUint8ClampedArrayView_factory, 0x6c59e8ba) \
V(TypedDataLibrary, _UnmodifiableInt16ArrayView, ._, \
TypedData_UnmodifiableInt16ArrayView_factory, 0xb6cb193b) \
TypedData_UnmodifiableInt16ArrayView_factory, 0x6c74b817) \
V(TypedDataLibrary, _UnmodifiableUint16ArrayView, ._, \
TypedData_UnmodifiableUint16ArrayView_factory, 0xa6bea3d7) \
TypedData_UnmodifiableUint16ArrayView_factory, 0xec6da26d) \
V(TypedDataLibrary, _UnmodifiableInt32ArrayView, ._, \
TypedData_UnmodifiableInt32ArrayView_factory, 0x48e066e5) \
TypedData_UnmodifiableInt32ArrayView_factory, 0xb60484c4) \
V(TypedDataLibrary, _UnmodifiableUint32ArrayView, ._, \
TypedData_UnmodifiableUint32ArrayView_factory, 0x9508a275) \
TypedData_UnmodifiableUint32ArrayView_factory, 0x60c008ff) \
V(TypedDataLibrary, _UnmodifiableInt64ArrayView, ._, \
TypedData_UnmodifiableInt64ArrayView_factory, 0x7635c145) \
TypedData_UnmodifiableInt64ArrayView_factory, 0x98aff1d4) \
V(TypedDataLibrary, _UnmodifiableUint64ArrayView, ._, \
TypedData_UnmodifiableUint64ArrayView_factory, 0x3ffeb983) \
TypedData_UnmodifiableUint64ArrayView_factory, 0x82b8406e) \
V(TypedDataLibrary, _UnmodifiableFloat32ArrayView, ._, \
TypedData_UnmodifiableFloat32ArrayView_factory, 0x5406ef8a) \
TypedData_UnmodifiableFloat32ArrayView_factory, 0xd6ef44e0) \
V(TypedDataLibrary, _UnmodifiableFloat64ArrayView, ._, \
TypedData_UnmodifiableFloat64ArrayView_factory, 0xbf6cd86c) \
TypedData_UnmodifiableFloat64ArrayView_factory, 0xa938e7c3) \
V(TypedDataLibrary, _UnmodifiableFloat32x4ArrayView, ._, \
TypedData_UnmodifiableFloat32x4ArrayView_factory, 0x5f08d69b) \
TypedData_UnmodifiableFloat32x4ArrayView_factory, 0xdaa7e110) \
V(TypedDataLibrary, _UnmodifiableInt32x4ArrayView, ._, \
TypedData_UnmodifiableInt32x4ArrayView_factory, 0xf65dddb3) \
TypedData_UnmodifiableInt32x4ArrayView_factory, 0xc53f4ea7) \
V(TypedDataLibrary, _UnmodifiableFloat64x2ArrayView, ._, \
TypedData_UnmodifiableFloat64x2ArrayView_factory, 0x6d8c5a1b) \
TypedData_UnmodifiableFloat64x2ArrayView_factory, 0x0f95ea75) \
V(TypedDataLibrary, Int8List, ., TypedData_Int8Array_factory, 0x65f0bd07) \
V(TypedDataLibrary, Uint8List, ., TypedData_Uint8Array_factory, 0xedc6dace) \
V(TypedDataLibrary, Uint8ClampedList, ., \
@@ -433,23 +433,23 @@ namespace dart {
V(TypedDataLibrary, Float64x2List, ., TypedData_Float64x2Array_factory, \
0xecade3e9) \
V(TypedDataLibrary, _TypedListBase, _memMove1, TypedData_memMove1, \
0xd267f3d0) \
0xc9e2c2e8) \
V(TypedDataLibrary, _TypedListBase, _memMove2, TypedData_memMove2, \
0xed299fd6) \
0xb8ce9805) \
V(TypedDataLibrary, _TypedListBase, _memMove4, TypedData_memMove4, \
0xcfd4eb46) \
0xd1aa4ff0) \
V(TypedDataLibrary, _TypedListBase, _memMove8, TypedData_memMove8, \
0xd1ca5745) \
0xd6e9ea3c) \
V(TypedDataLibrary, _TypedListBase, _memMove16, TypedData_memMove16, \
0x077790f5) \
0xce3f5080) \
V(TypedDataLibrary, ::, _typedDataIndexCheck, TypedDataIndexCheck, \
0x7912cea9) \
0x6bf4597c) \
V(TypedDataLibrary, ::, _byteDataByteOffsetCheck, ByteDataByteOffsetCheck, \
0xbaf71484) \
0xa3d746a7) \
V(TypedDataLibrary, Float32x4, _Float32x4FromDoubles, Float32x4FromDoubles, \
0x1828616b) \
0x5bf18ed9) \
V(TypedDataLibrary, Float32x4, Float32x4.zero, Float32x4Zero, 0xd3992842) \
V(TypedDataLibrary, Float32x4, _Float32x4Splat, Float32x4Splat, 0x13883b03) \
V(TypedDataLibrary, Float32x4, _Float32x4Splat, Float32x4Splat, 0x634bed32) \
V(TypedDataLibrary, Float32x4, Float32x4.fromInt32x4Bits, \
Int32x4ToFloat32x4, 0x7eb87d82) \
V(TypedDataLibrary, Float32x4, Float32x4.fromFloat64x2, \
@@ -477,14 +477,14 @@ namespace dart {
V(TypedDataLibrary, _Float32x4, unary-, Float32x4Negate, 0xe68eac52) \
V(TypedDataLibrary, _Float32x4, abs, Float32x4Abs, 0xeb296688) \
V(TypedDataLibrary, _Float32x4, clamp, Float32x4Clamp, 0x77b05a1d) \
V(TypedDataLibrary, _Float32x4, _withX, Float32x4WithX, 0xa2fa87ef) \
V(TypedDataLibrary, _Float32x4, _withY, Float32x4WithY, 0x9b9c9c83) \
V(TypedDataLibrary, _Float32x4, _withZ, Float32x4WithZ, 0x97b916e0) \
V(TypedDataLibrary, _Float32x4, _withW, Float32x4WithW, 0x95160a9b) \
V(TypedDataLibrary, _Float32x4, _withX, Float32x4WithX, 0xa37b7fa7) \
V(TypedDataLibrary, _Float32x4, _withY, Float32x4WithY, 0xcd0ff712) \
V(TypedDataLibrary, _Float32x4, _withZ, Float32x4WithZ, 0xb99fe966) \
V(TypedDataLibrary, _Float32x4, _withW, Float32x4WithW, 0xd3567bb9) \
V(TypedDataLibrary, Float64x2, _Float64x2FromDoubles, Float64x2FromDoubles, \
0xd83bc891) \
0x7d1f258d) \
V(TypedDataLibrary, Float64x2, Float64x2.zero, Float64x2Zero, 0x82777158) \
V(TypedDataLibrary, Float64x2, _Float64x2Splat, Float64x2Splat, 0x5af65404) \
V(TypedDataLibrary, Float64x2, _Float64x2Splat, Float64x2Splat, 0x3d21f386) \
V(TypedDataLibrary, Float64x2, Float64x2.fromFloat32x4, \
Float32x4ToFloat64x2, 0x6e8a84a6) \
V(TypedDataLibrary, _Float64x2, get:x, Float64x2GetX, 0x3a1c6d70) \
@@ -496,13 +496,13 @@ namespace dart {
V(TypedDataLibrary, _Float64x2, get:signMask, Float64x2GetSignMask, \
0x7c4dfa2a) \
V(TypedDataLibrary, _Float64x2, scale, Float64x2Scale, 0x52787958) \
V(TypedDataLibrary, _Float64x2, _withX, Float64x2WithX, 0x51d8d105) \
V(TypedDataLibrary, _Float64x2, _withY, Float64x2WithY, 0x4a7ae599) \
V(TypedDataLibrary, _Float64x2, _withX, Float64x2WithX, 0x5259c8bd) \
V(TypedDataLibrary, _Float64x2, _withY, Float64x2WithY, 0x7bee4028) \
V(TypedDataLibrary, _Float64x2, min, Float64x2Min, 0x3611c492) \
V(TypedDataLibrary, _Float64x2, max, Float64x2Max, 0x18414663) \
V(TypedDataLibrary, Int32x4, _Int32x4FromInts, Int32x4FromInts, 0xa8e3a570) \
V(TypedDataLibrary, Int32x4, _Int32x4FromInts, Int32x4FromInts, 0x2d46f8dd) \
V(TypedDataLibrary, Int32x4, _Int32x4FromBools, Int32x4FromBools, \
0xf54f7808) \
0x89c00421) \
V(TypedDataLibrary, Int32x4, Int32x4.fromFloat32x4Bits, Float32x4ToInt32x4, \
0x45555da1) \
V(TypedDataLibrary, _Int32x4, get:flagX, Int32x4GetFlagX, 0xc281ec18) \
@@ -513,10 +513,10 @@ namespace dart {
V(TypedDataLibrary, _Int32x4, shuffle, Int32x4Shuffle, 0x4044fa13) \
V(TypedDataLibrary, _Int32x4, shuffleMix, Int32x4ShuffleMix, 0x4fcb1cdc) \
V(TypedDataLibrary, _Int32x4, select, Int32x4Select, 0x68ad87e0) \
V(TypedDataLibrary, _Int32x4, _withFlagX, Int32x4WithFlagX, 0xb7c1e8a3) \
V(TypedDataLibrary, _Int32x4, _withFlagY, Int32x4WithFlagY, 0xa8b283e6) \
V(TypedDataLibrary, _Int32x4, _withFlagZ, Int32x4WithFlagZ, 0xa7e87094) \
V(TypedDataLibrary, _Int32x4, _withFlagW, Int32x4WithFlagW, 0xb316e198) \
V(TypedDataLibrary, _Int32x4, _withFlagX, Int32x4WithFlagX, 0x9c13e04a) \
V(TypedDataLibrary, _Int32x4, _withFlagY, Int32x4WithFlagY, 0xbded0a49) \
V(TypedDataLibrary, _Int32x4, _withFlagZ, Int32x4WithFlagZ, 0xce48ea53) \
V(TypedDataLibrary, _Int32x4, _withFlagW, Int32x4WithFlagW, 0xbef4702b) \
// List of assembler intrinsics:
// (library, class-name, function-name, intrinsification method, fingerprint).
@@ -581,11 +581,11 @@ namespace dart {
V(CoreLibrary, _IntegerImplementation, >=, Integer_greaterEqualThan, \
0x4aa007b3) \
V(CoreLibrary, _IntegerImplementation, <<, Integer_shl, 0x2d16ae7a) \
V(DeveloperLibrary, ::, _getDefaultTag, UserTag_defaultTag, 0x6bfcb0e5) \
V(DeveloperLibrary, ::, _getCurrentTag, Profiler_getCurrentTag, 0x70cdb8ce) \
V(DeveloperLibrary, ::, _getDefaultTag, UserTag_defaultTag, 0x59490cb3) \
V(DeveloperLibrary, ::, _getCurrentTag, Profiler_getCurrentTag, 0x4a0762f4) \
V(DeveloperLibrary, ::, _isDartStreamEnabled, Timeline_isDartStreamEnabled, \
0xc95d97f3) \
V(DeveloperLibrary, ::, _getNextTaskId, Timeline_getNextTaskId, 0x5b0df34b) \
0xe87bfe54) \
V(DeveloperLibrary, ::, _getNextTaskId, Timeline_getNextTaskId, 0x43c2f99b) \
V(InternalLibrary, ::, allocateOneByteString, AllocateOneByteString, \
0x9e5a2e15) \
V(InternalLibrary, ::, allocateTwoByteString, AllocateTwoByteString, \
@@ -623,27 +623,27 @@ namespace dart {
V(CoreLibrary, _IntegerImplementation, >>, Integer_sar, 0x49c7691f) \
V(CoreLibrary, _IntegerImplementation, >>>, Integer_shr, 0x2b3da581) \
V(CoreLibrary, _Double, unary-, DoubleFlipSignBit, 0x3d1bf06b) \
V(TypedDataLibrary, _Int8List, []=, Int8ArraySetIndexed, 0x02e93049) \
V(TypedDataLibrary, _Uint8List, []=, Uint8ArraySetIndexed, 0xc8ef5e7d) \
V(TypedDataLibrary, _Int8List, []=, Int8ArraySetIndexed, 0x507b6fcd) \
V(TypedDataLibrary, _Uint8List, []=, Uint8ArraySetIndexed, 0x70278ad7) \
V(TypedDataLibrary, _ExternalUint8Array, []=, ExternalUint8ArraySetIndexed, \
0xc8ef5e7d) \
0x70278ad7) \
V(TypedDataLibrary, _Uint8ClampedList, []=, Uint8ClampedArraySetIndexed, \
0x44f383c5) \
0xf619ff25) \
V(TypedDataLibrary, _ExternalUint8ClampedArray, []=, \
ExternalUint8ClampedArraySetIndexed, 0x44f383c5) \
V(TypedDataLibrary, _Int16List, []=, Int16ArraySetIndexed, 0x3c444b9c) \
V(TypedDataLibrary, _Uint16List, []=, Uint16ArraySetIndexed, 0x96d4fe9c) \
V(TypedDataLibrary, _Int32List, []=, Int32ArraySetIndexed, 0x7ce3fb7c) \
V(TypedDataLibrary, _Uint32List, []=, Uint32ArraySetIndexed, 0xe4f7d33c) \
V(TypedDataLibrary, _Int64List, []=, Int64ArraySetIndexed, 0x671bf23c) \
V(TypedDataLibrary, _Uint64List, []=, Uint64ArraySetIndexed, 0x5e1499dc) \
V(TypedDataLibrary, _Float64List, []=, Float64ArraySetIndexed, 0x84c8ac62) \
V(TypedDataLibrary, _Float32List, []=, Float32ArraySetIndexed, 0x5e23a4a2) \
ExternalUint8ClampedArraySetIndexed, 0xf619ff25) \
V(TypedDataLibrary, _Int16List, []=, Int16ArraySetIndexed, 0x070bb1fc) \
V(TypedDataLibrary, _Uint16List, []=, Uint16ArraySetIndexed, 0x3392641c) \
V(TypedDataLibrary, _Int32List, []=, Int32ArraySetIndexed, 0xb28f43dc) \
V(TypedDataLibrary, _Uint32List, []=, Uint32ArraySetIndexed, 0x3e9643fc) \
V(TypedDataLibrary, _Int64List, []=, Int64ArraySetIndexed, 0xb4a7347c) \
V(TypedDataLibrary, _Uint64List, []=, Uint64ArraySetIndexed, 0x1486557c) \
V(TypedDataLibrary, _Float64List, []=, Float64ArraySetIndexed, 0x3242f302) \
V(TypedDataLibrary, _Float32List, []=, Float32ArraySetIndexed, 0xfd9ad482) \
V(TypedDataLibrary, _Float32x4List, []=, Float32x4ArraySetIndexed, \
0xadb196fb) \
V(TypedDataLibrary, _Int32x4List, []=, Int32x4ArraySetIndexed, 0xf37c3bf3) \
0x8852d29b) \
V(TypedDataLibrary, _Int32x4List, []=, Int32x4ArraySetIndexed, 0x0a36bc53) \
V(TypedDataLibrary, _Float64x2List, []=, Float64x2ArraySetIndexed, \
0xf3086b45) \
0x1f07e105) \
V(TypedDataLibrary, _TypedListBase, get:length, TypedListBaseLength, \
0x5833d8ab) \
V(TypedDataLibrary, _ByteDataView, get:length, ByteDataViewLength, \
@@ -669,38 +669,38 @@ namespace dart {
// A list of core functions that internally dispatch based on received id.
#define POLYMORPHIC_TARGET_LIST(V) \
V(CoreLibrary, _StringBase, [], StringBaseCharAt, 0xd052aeff) \
V(TypedDataLibrary, _TypedList, _getInt8, TypedList_GetInt8, 0x1606c835) \
V(TypedDataLibrary, _TypedList, _getUint8, TypedList_GetUint8, 0x1762ea2b) \
V(TypedDataLibrary, _TypedList, _getInt16, TypedList_GetInt16, 0x2e238250) \
V(TypedDataLibrary, _TypedList, _getUint16, TypedList_GetUint16, 0x2fa4e2ba) \
V(TypedDataLibrary, _TypedList, _getInt32, TypedList_GetInt32, 0x18fb190b) \
V(TypedDataLibrary, _TypedList, _getUint32, TypedList_GetUint32, 0x19405a7c) \
V(TypedDataLibrary, _TypedList, _getInt64, TypedList_GetInt64, 0xf643ac00) \
V(TypedDataLibrary, _TypedList, _getUint64, TypedList_GetUint64, 0x2c3e655a) \
V(TypedDataLibrary, _TypedList, _getInt8, TypedList_GetInt8, 0x26d42e4c) \
V(TypedDataLibrary, _TypedList, _getUint8, TypedList_GetUint8, 0xf58cab06) \
V(TypedDataLibrary, _TypedList, _getInt16, TypedList_GetInt16, 0xffbc3275) \
V(TypedDataLibrary, _TypedList, _getUint16, TypedList_GetUint16, 0xfa3e6ed7) \
V(TypedDataLibrary, _TypedList, _getInt32, TypedList_GetInt32, 0x30684c92) \
V(TypedDataLibrary, _TypedList, _getUint32, TypedList_GetUint32, 0x252cc660) \
V(TypedDataLibrary, _TypedList, _getInt64, TypedList_GetInt64, 0x2c2f44e0) \
V(TypedDataLibrary, _TypedList, _getUint64, TypedList_GetUint64, 0x2f85e64b) \
V(TypedDataLibrary, _TypedList, _getFloat32, TypedList_GetFloat32, \
0xe8d98d08) \
0xf2b3f49c) \
V(TypedDataLibrary, _TypedList, _getFloat64, TypedList_GetFloat64, \
0xf80d2235) \
0xd8edbf39) \
V(TypedDataLibrary, _TypedList, _getFloat32x4, TypedList_GetFloat32x4, \
0xaf0ff8e6) \
0x8535083e) \
V(TypedDataLibrary, _TypedList, _getInt32x4, TypedList_GetInt32x4, \
0x5556600c) \
V(TypedDataLibrary, _TypedList, _setInt8, TypedList_SetInt8, 0xe16c2fa3) \
V(TypedDataLibrary, _TypedList, _setUint8, TypedList_SetInt8, 0xaf3ca349) \
V(TypedDataLibrary, _TypedList, _setInt16, TypedList_SetInt16, 0xbac92c28) \
V(TypedDataLibrary, _TypedList, _setUint16, TypedList_SetInt16, 0xce053450) \
V(TypedDataLibrary, _TypedList, _setInt32, TypedList_SetInt32, 0xbdbd9741) \
V(TypedDataLibrary, _TypedList, _setUint32, TypedList_SetUint32, 0xb9498fb3) \
V(TypedDataLibrary, _TypedList, _setInt64, TypedList_SetInt64, 0xc8b03b7b) \
V(TypedDataLibrary, _TypedList, _setUint64, TypedList_SetUint64, 0xda2a1e06) \
0x5492ada5) \
V(TypedDataLibrary, _TypedList, _setInt8, TypedList_SetInt8, 0xc407fda1) \
V(TypedDataLibrary, _TypedList, _setUint8, TypedList_SetInt8, 0xe1bade7c) \
V(TypedDataLibrary, _TypedList, _setInt16, TypedList_SetInt16, 0xb419c6ad) \
V(TypedDataLibrary, _TypedList, _setUint16, TypedList_SetInt16, 0xa7231704) \
V(TypedDataLibrary, _TypedList, _setInt32, TypedList_SetInt32, 0xb649e136) \
V(TypedDataLibrary, _TypedList, _setUint32, TypedList_SetUint32, 0xbe067c9d) \
V(TypedDataLibrary, _TypedList, _setInt64, TypedList_SetInt64, 0xd893ceb9) \
V(TypedDataLibrary, _TypedList, _setUint64, TypedList_SetUint64, 0xb69598f1) \
V(TypedDataLibrary, _TypedList, _setFloat32, TypedList_SetFloat32, \
0x2f1919e1) \
0x134728fa) \
V(TypedDataLibrary, _TypedList, _setFloat64, TypedList_SetFloat64, \
0x233ce4d3) \
0x0c2e6726) \
V(TypedDataLibrary, _TypedList, _setFloat32x4, TypedList_SetFloat32x4, \
0x38a9155b) \
0x3dc17446) \
V(TypedDataLibrary, _TypedList, _setInt32x4, TypedList_SetInt32x4, \
0x5ccbee5c) \
0x5f4a7491) \
V(CoreLibrary, Object, get:runtimeType, ObjectRuntimeType, 0x0364b091) \
// List of recognized list factories:
File diff suppressed because it is too large Load Diff
+4 -4
View File
@@ -778,13 +778,13 @@ static ObjectPtr RehashObjects(Zone* zone,
return DartEntry::InvokeFunction(rehashing_function, arguments);
}
ObjectPtr DartLibraryCalls::RehashObjectsInDartCollection(
ObjectPtr DartLibraryCalls::RehashObjectsInDartCompactHash(
Thread* thread,
const Object& array_or_growable_array) {
auto zone = thread->zone();
const auto& collections_lib =
Library::Handle(zone, Library::CollectionLibrary());
return RehashObjects(zone, collections_lib, array_or_growable_array);
const auto& compact_hash_lib =
Library::Handle(zone, Library::CompactHashLibrary());
return RehashObjects(zone, compact_hash_lib, array_or_growable_array);
}
ObjectPtr DartLibraryCalls::RehashObjectsInDartCore(
+2 -2
View File
@@ -302,8 +302,8 @@ class DartLibraryCalls : public AllStatic {
// Returns null on success, an ErrorPtr on failure.
static ObjectPtr EnsureScheduleImmediate();
// Runs the `_rehashObjects()` function in `dart:collection`.
static ObjectPtr RehashObjectsInDartCollection(
// Runs the `_rehashObjects()` function in `dart:compact_hash`.
static ObjectPtr RehashObjectsInDartCompactHash(
Thread* thread,
const Object& array_or_growable_array);
+3 -3
View File
@@ -490,7 +490,7 @@ ObjectPtr MessageDeserializationCluster::PostLoadLinkedHash(
Array& maps = Array::Handle(d->zone(), d->refs());
maps = maps.Slice(start_index_, stop_index_ - start_index_,
/*with_type_argument=*/false);
return DartLibraryCalls::RehashObjectsInDartCollection(d->thread(), maps);
return DartLibraryCalls::RehashObjectsInDartCompactHash(d->thread(), maps);
}
class ClassMessageSerializationCluster : public MessageSerializationCluster {
@@ -3452,8 +3452,8 @@ ObjectPtr ReadObjectGraphCopyMessage(Thread* thread, PersistentHandle* handle) {
if (msg_array.At(1) != Object::null()) {
const auto& objects_to_rehash = Object::Handle(zone, msg_array.At(1));
auto& result = Object::Handle(zone);
result = DartLibraryCalls::RehashObjectsInDartCollection(thread,
objects_to_rehash);
result = DartLibraryCalls::RehashObjectsInDartCompactHash(
thread, objects_to_rehash);
if (result.ptr() != Object::null()) {
msg_obj = result.ptr();
}
+19 -6
View File
@@ -2011,18 +2011,18 @@ ErrorPtr Object::Init(IsolateGroup* isolate_group,
cls = Class::New<MirrorReference, RTN::MirrorReference>(isolate_group);
RegisterPrivateClass(cls, Symbols::_MirrorReference(), lib);
// Pre-register the collection library so we can place the vm class
// Map there rather than the core library.
lib = Library::LookupLibrary(thread, Symbols::DartCollection());
// Pre-register dart:_compact_hash library so that we could place
// collection classes (_Map, _ConstMap, _Set, _ConstSet) here.
lib = Library::LookupLibrary(thread, Symbols::DartCompactHash());
if (lib.IsNull()) {
lib = Library::NewLibraryHelper(Symbols::DartCollection(), true);
lib = Library::NewLibraryHelper(Symbols::DartCompactHash(), true);
lib.SetLoadRequested();
lib.Register(thread);
}
object_store->set_bootstrap_library(ObjectStore::kCompactHash, lib);
object_store->set_bootstrap_library(ObjectStore::kCollection, lib);
ASSERT(!lib.IsNull());
ASSERT(lib.ptr() == Library::CollectionLibrary());
ASSERT(lib.ptr() == Library::CompactHashLibrary());
cls = Class::New<Map, RTN::Map>(isolate_group);
object_store->set_map_impl_class(cls);
cls.set_type_arguments_field_offset(Map::type_arguments_offset(),
@@ -2057,6 +2057,15 @@ ErrorPtr Object::Init(IsolateGroup* isolate_group,
RegisterPrivateClass(cls, Symbols::_ConstSet(), lib);
pending_classes.Add(cls);
// Pre-register the collection library.
lib = Library::LookupLibrary(thread, Symbols::DartCollection());
if (lib.IsNull()) {
lib = Library::NewLibraryHelper(Symbols::DartCollection(), true);
lib.SetLoadRequested();
lib.Register(thread);
}
object_store->set_bootstrap_library(ObjectStore::kCollection, lib);
// Pre-register the async library so we can place the vm class
// FutureOr there rather than the core library.
lib = Library::LookupLibrary(thread, Symbols::DartAsync());
@@ -14812,6 +14821,10 @@ LibraryPtr Library::CollectionLibrary() {
return IsolateGroup::Current()->object_store()->collection_library();
}
LibraryPtr Library::CompactHashLibrary() {
return IsolateGroup::Current()->object_store()->_compact_hash_library();
}
LibraryPtr Library::DeveloperLibrary() {
return IsolateGroup::Current()->object_store()->developer_library();
}
+5 -4
View File
@@ -5353,6 +5353,7 @@ class Library : public Object {
static LibraryPtr ConvertLibrary();
static LibraryPtr CoreLibrary();
static LibraryPtr CollectionLibrary();
static LibraryPtr CompactHashLibrary();
static LibraryPtr DeveloperLibrary();
static LibraryPtr FfiLibrary();
static LibraryPtr InternalLibrary();
@@ -12118,7 +12119,7 @@ class ImmutableLinkedHashBase : public AllStatic {
};
// Corresponds to
// - _Map in dart:collection
// - _Map in dart:_compact_hash
// - "new Map()",
// - non-const map literals, and
// - the default constructor of LinkedHashMap in dart:collection.
@@ -12191,7 +12192,7 @@ class Map : public LinkedHashBase {
};
// Corresponds to
// - _ConstMap in dart:collection
// - _ConstMap in dart:_compact_hash
// - const map literals
class ConstMap : public AllStatic {
public:
@@ -12221,7 +12222,7 @@ class ConstMap : public AllStatic {
};
// Corresponds to
// - _Set in dart:collection,
// - _Set in dart:_compact_hash,
// - "new Set()",
// - non-const set literals, and
// - the default constructor of LinkedHashSet in dart:collection.
@@ -12292,7 +12293,7 @@ class Set : public LinkedHashBase {
};
// Corresponds to
// - _ConstSet in dart:collection
// - _ConstSet in dart:_compact_hash
// - const set literals
class ConstSet : public AllStatic {
public:
+3 -2
View File
@@ -216,8 +216,9 @@ void ObjectStore::InitKnownObjects() {
Thread* thread = Thread::Current();
Zone* zone = thread->zone();
Class& cls = Class::Handle(zone);
const Library& collection_lib = Library::Handle(zone, collection_library());
cls = collection_lib.LookupClassAllowPrivate(Symbols::_Set());
const Library& compact_hash_lib =
Library::Handle(zone, _compact_hash_library());
cls = compact_hash_lib.LookupClassAllowPrivate(Symbols::_Set());
ASSERT(!cls.IsNull());
set_set_impl_class(cls);
+2
View File
@@ -19,6 +19,7 @@ class ObjectPointerVisitor;
#define FOR_EACH_BOOTSTRAP_LIBRARY(M) \
M(Core, core) \
M(Async, async) \
M(CompactHash, _compact_hash) \
M(Collection, collection) \
M(Convert, convert) \
M(Developer, developer) \
@@ -142,6 +143,7 @@ class ObjectPointerVisitor;
RW(Array, canonical_type_arguments) \
RW(Library, async_library) \
RW(Library, core_library) \
RW(Library, _compact_hash_library) \
RW(Library, collection_library) \
RW(Library, concurrent_library) \
RW(Library, convert_library) \
+7 -6
View File
@@ -6215,14 +6215,15 @@ ISOLATE_UNIT_TEST_CASE(PrintJSONPrimitives) {
ElideJSONSubstring("_TypeParameter@", buffer, buffer);
EXPECT_SUBSTRING(
"{\"type\":\"@Instance\",\"_vmType\":\"Map\",\"class\":{"
"\"type\":\"@Class\",\"fixedId\":true,\"id\":\"\",\"name\":\"_"
"Map\",\"_vmName\":\"\",\"location\":{\"type\":"
"\"type\":\"@Class\",\"fixedId\":true,\"id\":\"\",\"name\":\""
"_Map\",\"_vmName\":\"\",\"location\":{\"type\":"
"\"SourceLocation\",\"script\":{\"type\":\"@Script\",\"fixedId\":true,"
"\"id\":\"\",\"uri\":\"dart:collection-patch\\/"
"compact_hash.dart\",\"_kind\":\"kernel\"}"
"\"id\":\"\",\"uri\":\"dart:_compact_hash\","
"\"_kind\":\"kernel\"}"
"},\"library\":{\"type\":\"@Library\",\"fixedId\":"
"true,\"id\":\"\",\"name\":\"dart.collection\",\"uri\":\"dart:"
"collection\"},\"typeParameters\":[{\"type\":\"@Instance\",\"_vmType\":"
"true,\"id\":\"\",\"name\":\"dart._compact_hash\","
"\"uri\":\"dart:_compact_hash\"},"
"\"typeParameters\":[{\"type\":\"@Instance\",\"_vmType\":"
"\"TypeParameter\",\"class\":{\"type\":\"@Class\",\"fixedId\":true,"
"\"id\":\"\",\"name\":\"_TypeParameter\",\"_vmName\":\""
"\",\"location\":{\"type\":\"SourceLocation\",\"script\":{"
+1
View File
@@ -54,6 +54,7 @@ class ObjectPointerVisitor;
V(CurrentContextVar, ":current_context_var") \
V(DartAsync, "dart:async") \
V(DartCollection, "dart:collection") \
V(DartCompactHash, "dart:_compact_hash") \
V(DartConcurrent, "dart:concurrent") \
V(DartCore, "dart:core") \
V(DartDeveloper, "dart:developer") \
+17 -8
View File
@@ -2,6 +2,15 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import "dart:_compact_hash"
show
DefaultMap,
DefaultSet,
CompactLinkedIdentityHashSet,
CompactLinkedCustomHashSet,
CompactLinkedCustomHashMap,
CompactLinkedIdentityHashMap;
import "dart:_internal" show patch;
import "dart:typed_data" show Uint32List;
@@ -19,13 +28,13 @@ class LinkedHashMap<K, V> {
if (isValidKey == null) {
if (hashCode == null) {
if (equals == null) {
return new _Map<K, V>();
return DefaultMap<K, V>();
}
hashCode = _defaultHashCode;
} else {
if (identical(identityHashCode, hashCode) &&
identical(identical, equals)) {
return new _CompactLinkedIdentityHashMap<K, V>();
return CompactLinkedIdentityHashMap<K, V>();
}
equals ??= _defaultEquals;
}
@@ -33,11 +42,11 @@ class LinkedHashMap<K, V> {
hashCode ??= _defaultHashCode;
equals ??= _defaultEquals;
}
return new _CompactLinkedCustomHashMap<K, V>(equals, hashCode, isValidKey);
return CompactLinkedCustomHashMap<K, V>(equals, hashCode, isValidKey);
}
@patch
factory LinkedHashMap.identity() => new _CompactLinkedIdentityHashMap<K, V>();
factory LinkedHashMap.identity() => CompactLinkedIdentityHashMap<K, V>();
}
@patch
@@ -50,13 +59,13 @@ class LinkedHashSet<E> {
if (isValidKey == null) {
if (hashCode == null) {
if (equals == null) {
return new _Set<E>();
return DefaultSet<E>();
}
hashCode = _defaultHashCode;
} else {
if (identical(identityHashCode, hashCode) &&
identical(identical, equals)) {
return new _CompactLinkedIdentityHashSet<E>();
return CompactLinkedIdentityHashSet<E>();
}
equals ??= _defaultEquals;
}
@@ -64,9 +73,9 @@ class LinkedHashSet<E> {
hashCode ??= _defaultHashCode;
equals ??= _defaultEquals;
}
return new _CompactLinkedCustomHashSet<E>(equals, hashCode, isValidKey);
return CompactLinkedCustomHashSet<E>(equals, hashCode, isValidKey);
}
@patch
factory LinkedHashSet.identity() => new _CompactLinkedIdentityHashSet<E>();
factory LinkedHashSet.identity() => CompactLinkedIdentityHashSet<E>();
}
@@ -4,11 +4,7 @@
import "dart:_internal" as internal;
import "dart:_internal" show unsafeCast, patch, IterableElementError;
class _TypeTest<T> {
bool test(v) => v is T;
}
import "dart:_internal" show unsafeCast, patch, IterableElementError, TypeTest;
@patch
class HashMap<K, V> {
@@ -258,7 +254,7 @@ base class _CustomHashMap<K, V> extends _HashMap<K, V> {
final _Hasher<K> _hashCode;
final _Predicate _validKey;
_CustomHashMap(this._equals, this._hashCode, _Predicate? validKey)
: _validKey = (validKey != null) ? validKey : new _TypeTest<K>().test;
: _validKey = (validKey != null) ? validKey : TypeTest<K>().test;
bool containsKey(Object? key) {
if (!_validKey(key)) return false;
@@ -802,7 +798,7 @@ base class _CustomHashSet<E> extends _HashSet<E> {
final _Hasher<E> _hasher;
final _Predicate _validKey;
_CustomHashSet(this._equality, this._hasher, _Predicate? validKey)
: _validKey = (validKey != null) ? validKey : new _TypeTest<E>().test;
: _validKey = (validKey != null) ? validKey : TypeTest<E>().test;
bool remove(Object? element) {
if (!_validKey(element)) return false;
+115 -48
View File
@@ -1,15 +1,95 @@
// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
library dart._compact_hash;
import "dart:_internal" as internal;
import "dart:_internal" show patch, IterableElementError, ClassID;
import "dart:_internal" show patch, IterableElementError, ClassID, TypeTest;
import "dart:collection" show MapMixin, SetMixin, LinkedHashMap, LinkedHashSet;
import "dart:math" show max;
import "dart:typed_data" show Uint32List;
mixin _UnmodifiableMapMixin<K, V> implements LinkedHashMap<K, V> {
/// This operation is not supported by an unmodifiable map.
void operator []=(K key, V value) {
throw UnsupportedError("Cannot modify unmodifiable map");
}
/// This operation is not supported by an unmodifiable map.
void addAll(Map<K, V> other) {
throw UnsupportedError("Cannot modify unmodifiable map");
}
/// This operation is not supported by an unmodifiable map.
void addEntries(Iterable<MapEntry<K, V>> entries) {
throw UnsupportedError("Cannot modify unmodifiable map");
}
/// This operation is not supported by an unmodifiable map.
void clear() {
throw UnsupportedError("Cannot modify unmodifiable map");
}
/// This operation is not supported by an unmodifiable map.
V? remove(Object? key) {
throw UnsupportedError("Cannot modify unmodifiable map");
}
/// This operation is not supported by an unmodifiable map.
void removeWhere(bool test(K key, V value)) {
throw UnsupportedError("Cannot modify unmodifiable map");
}
/// This operation is not supported by an unmodifiable map.
V putIfAbsent(K key, V ifAbsent()) {
throw UnsupportedError("Cannot modify unmodifiable map");
}
/// This operation is not supported by an unmodifiable map.
V update(K key, V update(V value), {V Function()? ifAbsent}) {
throw UnsupportedError("Cannot modify unmodifiable map");
}
/// This operation is not supported by an unmodifiable map.
void updateAll(V update(K key, V value)) {
throw UnsupportedError("Cannot modify unmodifiable map");
}
}
mixin _UnmodifiableSetMixin<E> implements LinkedHashSet<E> {
static Never _throwUnmodifiable() {
throw UnsupportedError("Cannot change an unmodifiable set");
}
/// This operation is not supported by an unmodifiable set.
bool add(E value) => _throwUnmodifiable();
/// This operation is not supported by an unmodifiable set.
void clear() => _throwUnmodifiable();
/// This operation is not supported by an unmodifiable set.
void addAll(Iterable<E> elements) => _throwUnmodifiable();
/// This operation is not supported by an unmodifiable set.
void removeAll(Iterable<Object?> elements) => _throwUnmodifiable();
/// This operation is not supported by an unmodifiable set.
void retainAll(Iterable<Object?> elements) => _throwUnmodifiable();
/// This operation is not supported by an unmodifiable set.
void removeWhere(bool test(E element)) => _throwUnmodifiable();
/// This operation is not supported by an unmodifiable set.
void retainWhere(bool test(E element)) => _throwUnmodifiable();
/// This operation is not supported by an unmodifiable set.
bool remove(Object? value) => _throwUnmodifiable();
}
// Hash table with open addressing that separates the index from keys/values.
// This function takes care of rehashing of the linked hashmaps in [objects]. We
@@ -83,51 +163,41 @@ abstract class _HashVMBase implements _HashAbstractBase {
@pragma("vm:recognized", "other")
@pragma("vm:exact-result-type", "dart:typed_data#_Uint32List")
@pragma("vm:prefer-inline")
@pragma("vm:external-name", "LinkedHashBase_getIndex")
external Uint32List get _index;
@pragma("vm:recognized", "other")
@pragma("vm:prefer-inline")
@pragma("vm:external-name", "LinkedHashBase_setIndex")
external void set _index(Uint32List value);
@pragma("vm:recognized", "other")
@pragma("vm:exact-result-type", "dart:core#_Smi")
@pragma("vm:prefer-inline")
@pragma("vm:external-name", "LinkedHashBase_getHashMask")
external int get _hashMask;
@pragma("vm:recognized", "other")
@pragma("vm:prefer-inline")
@pragma("vm:external-name", "LinkedHashBase_setHashMask")
external void set _hashMask(int value);
@pragma("vm:recognized", "other")
@pragma("vm:exact-result-type", "dart:core#_List")
@pragma("vm:prefer-inline")
@pragma("vm:external-name", "LinkedHashBase_getData")
external List<Object?> get _data;
@pragma("vm:recognized", "other")
@pragma("vm:prefer-inline")
@pragma("vm:external-name", "LinkedHashBase_setData")
external void set _data(List<Object?> value);
@pragma("vm:recognized", "other")
@pragma("vm:exact-result-type", "dart:core#_Smi")
@pragma("vm:prefer-inline")
@pragma("vm:external-name", "LinkedHashBase_getUsedData")
external int get _usedData;
@pragma("vm:recognized", "other")
@pragma("vm:prefer-inline")
@pragma("vm:external-name", "LinkedHashBase_setUsedData")
external void set _usedData(int value);
@pragma("vm:recognized", "other")
@pragma("vm:exact-result-type", "dart:core#_Smi")
@pragma("vm:prefer-inline")
@pragma("vm:external-name", "LinkedHashBase_getDeletedKeys")
external int get _deletedKeys;
@pragma("vm:recognized", "other")
@pragma("vm:prefer-inline")
@pragma("vm:external-name", "LinkedHashBase_setDeletedKeys")
external void set _deletedKeys(int value);
}
@@ -138,20 +208,17 @@ abstract class _HashVMImmutableBase extends _HashVMBase
@pragma("vm:recognized", "other")
@pragma("vm:exact-result-type", "dart:core#_ImmutableList")
@pragma("vm:prefer-inline")
@pragma("vm:external-name", "ImmutableLinkedHashBase_getData")
external List<Object?> get _data;
// The index is nullable rather than not nullable.
@pragma("vm:recognized", "other")
@pragma("vm:prefer-inline")
@pragma("vm:external-name", "ImmutableLinkedHashBase_getIndex")
external Uint32List? get _indexNullable;
Uint32List get _index => _indexNullable!;
// Uses store-release atomic.
@pragma("vm:recognized", "other")
@pragma("vm:prefer-inline")
@pragma("vm:external-name", "ImmutableLinkedHashBase_setIndexStoreRelease")
external void set _index(Uint32List value);
}
@@ -309,8 +376,7 @@ base class _Map<K, V> extends _HashVMBase
}
void addAll(Map<K, V> other) {
if (other is _Map) {
final otherBase = other as _Map; // manual promotion.
if (other case final _Map otherBase) {
// If this map is empty we might be able to block-copy from [other].
if (isEmpty && _quickCopy(otherBase)) return;
// TODO(48143): Pre-grow capacity if it will reduce rehashing.
@@ -641,7 +707,7 @@ mixin _LinkedHashMapMixin<K, V> on _HashBase, _EqualsAndHashCode {
Iterable<V> get values => _CompactIterable<V>(this, -1, 2);
}
base class _CompactLinkedIdentityHashMap<K, V> extends _HashFieldBase
base class CompactLinkedIdentityHashMap<K, V> extends _HashFieldBase
with
MapMixin<K, V>,
_HashBase,
@@ -649,8 +715,7 @@ base class _CompactLinkedIdentityHashMap<K, V> extends _HashFieldBase
_LinkedHashMapMixin<K, V>
implements LinkedHashMap<K, V> {
void addAll(Map<K, V> other) {
if (other is _CompactLinkedIdentityHashMap) {
final otherBase = other as _CompactLinkedIdentityHashMap;
if (other case final CompactLinkedIdentityHashMap otherBase) {
// If this map is empty we might be able to block-copy from [other].
if (isEmpty && _quickCopy(otherBase)) return;
// TODO(48143): Pre-grow capacity if it will reduce rehashing.
@@ -659,7 +724,7 @@ base class _CompactLinkedIdentityHashMap<K, V> extends _HashFieldBase
}
}
base class _CompactLinkedCustomHashMap<K, V> extends _HashFieldBase
base class CompactLinkedCustomHashMap<K, V> extends _HashFieldBase
with
MapMixin<K, V>,
_HashBase,
@@ -674,9 +739,9 @@ base class _CompactLinkedCustomHashMap<K, V> extends _HashFieldBase
V? operator [](Object? o) => _validKey(o) ? super[o] : null;
V? remove(Object? o) => _validKey(o) ? super.remove(o) : null;
_CompactLinkedCustomHashMap(
CompactLinkedCustomHashMap(
this._equality, this._hasher, bool Function(Object?)? validKey)
: _validKey = validKey ?? _TypeTest<K>().test;
: _validKey = validKey ?? TypeTest<K>().test;
}
// Iterates through _data[_offset + _step], _data[_offset + 2*_step], ...
@@ -951,7 +1016,7 @@ mixin _LinkedHashSetMixin<E> on _HashBase, _EqualsAndHashCode {
// Set implementation, analogous to _Map. Set literals create instances of this
// class.
@pragma('vm:entry-point')
@pragma("vm:entry-point")
base class _Set<E> extends _HashVMBase
with
SetMixin<E>,
@@ -967,24 +1032,20 @@ base class _Set<E> extends _HashVMBase
_deletedKeys = 0;
}
Set<R> cast<R>() => Set.castFrom<E, R>(this, newSet: _newEmpty);
static Set<R> _newEmpty<R>() => _Set<R>();
// Returns a set of the same type, although this
// is not required by the spec. (For instance, always using an identity set
// would be technically correct, albeit surprising.)
Set<E> toSet() => _Set<E>()..addAll(this);
void addAll(Iterable<E> other) {
if (other is _Set) {
final otherBase = other as _Set;
if (other case final _Set otherBase) {
// If this set is empty we might be able to block-copy from [other].
if (isEmpty && _quickCopy(otherBase)) return;
// TODO(48143): Pre-grow capacity if it will reduce rehashing.
}
super.addAll(other);
}
Set<R> cast<R>() => Set.castFrom<E, R>(this, newSet: _newEmpty);
static Set<R> _newEmpty<R>() => _Set<R>();
Set<E> toSet() => _Set<E>()..addAll(this);
}
@pragma("vm:entry-point")
@@ -1070,30 +1131,30 @@ mixin _ImmutableLinkedHashSetMixin<E>
_CompactIteratorImmutable<E>(this, _data, _usedData, -1, 1);
}
base class _CompactLinkedIdentityHashSet<E> extends _HashFieldBase
base class CompactLinkedIdentityHashSet<E> extends _HashFieldBase
with
SetMixin<E>,
_HashBase,
_IdenticalAndIdentityHashCode,
_LinkedHashSetMixin<E>
implements LinkedHashSet<E> {
Set<E> toSet() => _CompactLinkedIdentityHashSet<E>()..addAll(this);
static Set<R> _newEmpty<R>() => _CompactLinkedIdentityHashSet<R>();
Set<R> cast<R>() => Set.castFrom<E, R>(this, newSet: _newEmpty);
void addAll(Iterable<E> other) {
if (other is _CompactLinkedIdentityHashSet<E>) {
if (other is CompactLinkedIdentityHashSet<E>) {
// If this set is empty we might be able to block-copy from [other].
if (isEmpty && _quickCopy(other)) return;
// TODO(48143): Pre-grow capacity if it will reduce rehashing.
}
super.addAll(other);
}
Set<E> toSet() => CompactLinkedIdentityHashSet<E>()..addAll(this);
static Set<R> _newEmpty<R>() => CompactLinkedIdentityHashSet<R>();
Set<R> cast<R>() => Set.castFrom<E, R>(this, newSet: _newEmpty);
}
base class _CompactLinkedCustomHashSet<E> extends _HashFieldBase
base class CompactLinkedCustomHashSet<E> extends _HashFieldBase
with
SetMixin<E>,
_HashBase,
@@ -1108,12 +1169,18 @@ base class _CompactLinkedCustomHashSet<E> extends _HashFieldBase
E? lookup(Object? o) => _validKey(o) ? super.lookup(o) : null;
bool remove(Object? o) => _validKey(o) ? super.remove(o) : false;
_CompactLinkedCustomHashSet(
CompactLinkedCustomHashSet(
this._equality, this._hasher, bool Function(Object?)? validKey)
: _validKey = validKey ?? _TypeTest<E>().test;
: _validKey = validKey ?? TypeTest<E>().test;
Set<R> cast<R>() => Set.castFrom<E, R>(this);
Set<E> toSet() =>
_CompactLinkedCustomHashSet<E>(_equality, _hasher, _validKey)
..addAll(this);
Set<E> toSet() => CompactLinkedCustomHashSet<E>(_equality, _hasher, _validKey)
..addAll(this);
}
/// Expose [_Map] as [DefaultMap] and [_Set] as [DefaultSet] so that
/// `dart:collection` could use these classes. We maintain original private
/// names unchanged to avoid breaking user code which incorrectly relies
/// on stability of [Type.toString].
typedef DefaultMap<K, V> = _Map<K, V>;
typedef DefaultSet<E> = _Set<E>;
+144 -220
View File
@@ -2,11 +2,91 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import "dart:_internal" show IterableElementError, ClassID, unsafeCast;
import "dart:_internal"
show IterableElementError, ClassID, TypeTest, unsafeCast;
import "dart:_wasm";
import "dart:collection";
import "dart:math" show max;
mixin _UnmodifiableMapMixin<K, V> implements LinkedHashMap<K, V> {
/// This operation is not supported by an unmodifiable map.
void operator []=(K key, V value) {
throw UnsupportedError("Cannot modify unmodifiable map");
}
/// This operation is not supported by an unmodifiable map.
void addAll(Map<K, V> other) {
throw UnsupportedError("Cannot modify unmodifiable map");
}
/// This operation is not supported by an unmodifiable map.
void addEntries(Iterable<MapEntry<K, V>> entries) {
throw UnsupportedError("Cannot modify unmodifiable map");
}
/// This operation is not supported by an unmodifiable map.
void clear() {
throw UnsupportedError("Cannot modify unmodifiable map");
}
/// This operation is not supported by an unmodifiable map.
V? remove(Object? key) {
throw UnsupportedError("Cannot modify unmodifiable map");
}
/// This operation is not supported by an unmodifiable map.
void removeWhere(bool test(K key, V value)) {
throw UnsupportedError("Cannot modify unmodifiable map");
}
/// This operation is not supported by an unmodifiable map.
V putIfAbsent(K key, V ifAbsent()) {
throw UnsupportedError("Cannot modify unmodifiable map");
}
/// This operation is not supported by an unmodifiable map.
V update(K key, V update(V value), {V Function()? ifAbsent}) {
throw UnsupportedError("Cannot modify unmodifiable map");
}
/// This operation is not supported by an unmodifiable map.
void updateAll(V update(K key, V value)) {
throw UnsupportedError("Cannot modify unmodifiable map");
}
}
mixin _UnmodifiableSetMixin<E> implements LinkedHashSet<E> {
static Never _throwUnmodifiable() {
throw UnsupportedError("Cannot change an unmodifiable set");
}
/// This operation is not supported by an unmodifiable set.
bool add(E value) => _throwUnmodifiable();
/// This operation is not supported by an unmodifiable set.
void clear() => _throwUnmodifiable();
/// This operation is not supported by an unmodifiable set.
void addAll(Iterable<E> elements) => _throwUnmodifiable();
/// This operation is not supported by an unmodifiable set.
void removeAll(Iterable<Object?> elements) => _throwUnmodifiable();
/// This operation is not supported by an unmodifiable set.
void retainAll(Iterable<Object?> elements) => _throwUnmodifiable();
/// This operation is not supported by an unmodifiable set.
void removeWhere(bool test(E element)) => _throwUnmodifiable();
/// This operation is not supported by an unmodifiable set.
void retainWhere(bool test(E element)) => _throwUnmodifiable();
/// This operation is not supported by an unmodifiable set.
bool remove(Object? value) => _throwUnmodifiable();
}
// Hash table with open addressing that separates the index from keys/values.
/// The object marking uninitialized [_HashBaseData._index] fields.
@@ -161,18 +241,6 @@ mixin _IdenticalAndIdentityHashCode implements _EqualsAndHashCode {
bool _equals(Object? e1, Object? e2) => identical(e1, e2);
}
mixin _OperatorEqualsAndCanonicalHashCode implements _EqualsAndHashCode {
int _hashCode(Object? e) {
final cid = ClassID.getID(e);
if (cid < ClassID.numPredefinedCids || cid == ClassID.cidSymbol) {
return e.hashCode;
}
return identityHashCode(e);
}
bool _equals(Object? e1, Object? e2) => e1 == e2;
}
mixin _CustomEqualsAndHashCode<K> implements _EqualsAndHashCode {
int Function(K) get _hasher;
bool Function(K, K) get _equality;
@@ -183,35 +251,53 @@ mixin _CustomEqualsAndHashCode<K> implements _EqualsAndHashCode {
bool _equals(Object? e1, Object? e2) => (_equality as Function)(e1, e2);
}
base class _Map<K, V> extends _HashFieldBase
@pragma("wasm:entry-point")
base class DefaultMap<K, V> extends _HashFieldBase
with
MapMixin<K, V>,
_HashBase,
_OperatorEqualsAndHashCode,
_LinkedHashMapMixin<K, V>
_LinkedHashMapMixin<K, V>,
_MapCreateIndexMixin<K, V>
implements LinkedHashMap<K, V> {
void addAll(Map<K, V> other) {
if (other is _Map) {
final otherBase = other as _Map; // manual promotion.
if (other case final DefaultMap otherBase) {
// If this map is empty we might be able to block-copy from [other].
if (isEmpty && _quickCopy(otherBase)) return;
// TODO(48143): Pre-grow capacity if it will reduce rehashing.
}
super.addAll(other);
}
@pragma("wasm:entry-point")
static DefaultMap<K, V> fromWasmArray<K, V>(WasmArray<Object?> data) {
final map = DefaultMap<K, V>();
assert(map._index == _uninitializedHashBaseIndex);
assert(map._hashMask == _HashBase._UNINITIALIZED_HASH_MASK);
assert(map._data == _uninitializedHashBaseData);
assert(map._usedData == 0);
assert(map._deletedKeys == 0);
map._data = data;
map._usedData = data.length;
map._createIndex(true);
return map;
}
}
// This is essentially the same class as _Map, but it does
// This is essentially the same class as DefaultMap, but it does
// not permit any modification of map entries from Dart code. We use
// this class for maps constructed from Dart constant maps.
@pragma("wasm:entry-point")
base class _ConstMap<K, V> extends _HashFieldBase
with
MapMixin<K, V>,
_HashBase,
_OperatorEqualsAndCanonicalHashCode,
_OperatorEqualsAndHashCode,
_LinkedHashMapMixin<K, V>,
_UnmodifiableMapMixin<K, V>,
_MapCreateIndexMixin<K, V>,
_UnmodifiableMapMixin<K, V>,
_ImmutableLinkedHashMapMixin<K, V>
implements LinkedHashMap<K, V> {
factory _ConstMap._uninstantiable() {
@@ -533,8 +619,7 @@ base class CompactLinkedIdentityHashMap<K, V> extends _HashFieldBase
_LinkedHashMapMixin<K, V>
implements LinkedHashMap<K, V> {
void addAll(Map<K, V> other) {
if (other is CompactLinkedIdentityHashMap) {
final otherBase = other as CompactLinkedIdentityHashMap;
if (other case final CompactLinkedIdentityHashMap otherBase) {
// If this map is empty we might be able to block-copy from [other].
if (isEmpty && _quickCopy(otherBase)) return;
// TODO(48143): Pre-grow capacity if it will reduce rehashing.
@@ -560,7 +645,7 @@ base class CompactLinkedCustomHashMap<K, V> extends _HashFieldBase
CompactLinkedCustomHashMap(
this._equality, this._hasher, bool Function(Object?)? validKey)
: _validKey = validKey ?? _TypeTest<K>().test;
: _validKey = validKey ?? TypeTest<K>().test;
}
// Iterates through _data[_offset + _step], _data[_offset + 2*_step], ...
@@ -823,40 +908,57 @@ mixin _LinkedHashSetMixin<E> on _HashBase, _EqualsAndHashCode {
_CompactIterator<E>(this, _data, _usedData, -1, 1);
}
// Set implementation, analogous to _Map. Set literals create instances of this
// class.
base class _Set<E> extends _HashFieldBase
// Set implementation, analogous to _Map. Set literals create instances
// of this class.
@pragma("wasm:entry-point")
base class DefaultSet<E> extends _HashFieldBase
with
SetMixin<E>,
_HashBase,
_OperatorEqualsAndHashCode,
_LinkedHashSetMixin<E>
_LinkedHashSetMixin<E>,
_SetCreateIndexMixin<E>
implements LinkedHashSet<E> {
Set<R> cast<R>() => Set.castFrom<E, R>(this, newSet: _newEmpty);
static Set<R> _newEmpty<R>() => _Set<R>();
// Returns a set of the same type, although this
// is not required by the spec. (For instance, always using an identity set
// would be technically correct, albeit surprising.)
Set<E> toSet() => _Set<E>()..addAll(this);
void addAll(Iterable<E> other) {
if (other is _Set) {
final otherBase = other as _Set;
if (other case final DefaultSet otherBase) {
// If this set is empty we might be able to block-copy from [other].
if (isEmpty && _quickCopy(otherBase)) return;
// TODO(48143): Pre-grow capacity if it will reduce rehashing.
}
super.addAll(other);
}
@pragma("wasm:entry-point")
static DefaultSet<E> fromWasmArray<E>(WasmArray<Object?> data) {
final set = DefaultSet<E>();
assert(set._index == _uninitializedHashBaseIndex);
assert(set._hashMask == _HashBase._UNINITIALIZED_HASH_MASK);
assert(set._data == _uninitializedHashBaseData);
assert(set._usedData == 0);
assert(set._deletedKeys == 0);
set._data = data;
set._usedData = data.length;
set._createIndex(true);
return set;
}
bool add(E key);
Set<R> cast<R>() => Set.castFrom<E, R>(this, newSet: _newEmpty);
static Set<R> _newEmpty<R>() => DefaultSet<R>();
Set<E> toSet() => DefaultSet<E>()..addAll(this);
}
@pragma("wasm:entry-point")
base class _ConstSet<E> extends _HashFieldBase
with
SetMixin<E>,
_HashBase,
_OperatorEqualsAndCanonicalHashCode,
_OperatorEqualsAndHashCode,
_LinkedHashSetMixin<E>,
_UnmodifiableSetMixin<E>,
_SetCreateIndexMixin<E>,
@@ -869,10 +971,10 @@ base class _ConstSet<E> extends _HashFieldBase
Set<R> cast<R>() => Set.castFrom<E, R>(this, newSet: _newEmpty);
static Set<R> _newEmpty<R>() => _Set<R>();
static Set<R> _newEmpty<R>() => DefaultSet<R>();
// Returns a mutable set.
Set<E> toSet() => _Set<E>()..addAll(this);
Set<E> toSet() => DefaultSet<E>()..addAll(this);
}
mixin _SetCreateIndexMixin<E>
@@ -991,187 +1093,9 @@ base class CompactLinkedCustomHashSet<E> extends _HashFieldBase
CompactLinkedCustomHashSet(
this._equality, this._hasher, bool Function(Object?)? validKey)
: _validKey = validKey ?? _TypeTest<E>().test;
: _validKey = validKey ?? TypeTest<E>().test;
Set<R> cast<R>() => Set.castFrom<E, R>(this);
Set<E> toSet() => CompactLinkedCustomHashSet<E>(_equality, _hasher, _validKey)
..addAll(this);
}
mixin _UnmodifiableMapMixin<K, V> implements Map<K, V> {
static Never _throwUnmodifiable() {
throw UnsupportedError("Cannot change an unmodifiable set");
}
/// This operation is not supported by an unmodifiable map.
void operator []=(K key, V value) {
_throwUnmodifiable();
}
/// This operation is not supported by an unmodifiable map.
void addAll(Map<K, V> other) {
_throwUnmodifiable();
}
/// This operation is not supported by an unmodifiable map.
void addEntries(Iterable<MapEntry<K, V>> entries) {
_throwUnmodifiable();
}
/// This operation is not supported by an unmodifiable map.
void clear() {
_throwUnmodifiable();
}
/// This operation is not supported by an unmodifiable map.
V? remove(Object? key) {
_throwUnmodifiable();
}
/// This operation is not supported by an unmodifiable map.
void removeWhere(bool test(K key, V value)) {
_throwUnmodifiable();
}
/// This operation is not supported by an unmodifiable map.
V putIfAbsent(K key, V ifAbsent()) {
_throwUnmodifiable();
}
/// This operation is not supported by an unmodifiable map.
V update(K key, V update(V value), {V Function()? ifAbsent}) {
_throwUnmodifiable();
}
/// This operation is not supported by an unmodifiable map.
void updateAll(V update(K key, V value)) {
_throwUnmodifiable();
}
}
mixin _UnmodifiableSetMixin<E> implements Set<E> {
static Never _throwUnmodifiable() {
throw UnsupportedError("Cannot change an unmodifiable set");
}
/// This operation is not supported by an unmodifiable set.
bool add(E value) => _throwUnmodifiable();
/// This operation is not supported by an unmodifiable set.
void clear() => _throwUnmodifiable();
/// This operation is not supported by an unmodifiable set.
void addAll(Iterable<E> elements) => _throwUnmodifiable();
/// This operation is not supported by an unmodifiable set.
void removeAll(Iterable<Object?> elements) => _throwUnmodifiable();
/// This operation is not supported by an unmodifiable set.
void retainAll(Iterable<Object?> elements) => _throwUnmodifiable();
/// This operation is not supported by an unmodifiable set.
void removeWhere(bool test(E element)) => _throwUnmodifiable();
/// This operation is not supported by an unmodifiable set.
void retainWhere(bool test(E element)) => _throwUnmodifiable();
/// This operation is not supported by an unmodifiable set.
bool remove(Object? value) => _throwUnmodifiable();
}
class _TypeTest<T> {
bool test(v) => v is T;
}
@pragma("wasm:entry-point")
base class WasmDefaultMap<K, V> extends _HashFieldBase
with
MapMixin<K, V>,
_HashBase,
_OperatorEqualsAndHashCode,
_LinkedHashMapMixin<K, V>,
_MapCreateIndexMixin<K, V>
implements LinkedHashMap<K, V> {
@pragma("wasm:entry-point")
static WasmDefaultMap<K, V> fromWasmArray<K, V>(WasmArray<Object?> data) {
final map = WasmDefaultMap<K, V>();
assert(map._index == _uninitializedHashBaseIndex);
assert(map._hashMask == _HashBase._UNINITIALIZED_HASH_MASK);
assert(map._data == _uninitializedHashBaseData);
assert(map._usedData == 0);
assert(map._deletedKeys == 0);
map._data = data;
map._usedData = data.length;
map._createIndex(true);
return map;
}
void operator []=(K key, V value);
}
@pragma('wasm:entry-point')
base class WasmDefaultSet<E> extends _HashFieldBase
with
SetMixin<E>,
_HashBase,
_OperatorEqualsAndHashCode,
_LinkedHashSetMixin<E>,
_SetCreateIndexMixin<E>
implements LinkedHashSet<E> {
@pragma("wasm:entry-point")
static WasmDefaultSet<E> fromWasmArray<E>(WasmArray<Object?> data) {
final map = WasmDefaultSet<E>();
assert(map._index == _uninitializedHashBaseIndex);
assert(map._hashMask == _HashBase._UNINITIALIZED_HASH_MASK);
assert(map._data == _uninitializedHashBaseData);
assert(map._usedData == 0);
assert(map._deletedKeys == 0);
map._data = data;
map._usedData = data.length;
map._createIndex(true);
return map;
}
bool add(E key);
Set<R> cast<R>() => Set.castFrom<E, R>(this, newSet: _newEmpty);
static Set<R> _newEmpty<R>() => WasmDefaultSet<R>();
Set<E> toSet() => WasmDefaultSet<E>()..addAll(this);
}
@pragma("wasm:entry-point")
base class WasmImmutableMap<K, V> extends _HashFieldBase
with
MapMixin<K, V>,
_HashBase,
_OperatorEqualsAndHashCode,
_LinkedHashMapMixin<K, V>,
_MapCreateIndexMixin<K, V>,
_UnmodifiableMapMixin<K, V>,
_ImmutableLinkedHashMapMixin<K, V>
implements LinkedHashMap<K, V> {}
@pragma("wasm:entry-point")
base class WasmImmutableSet<E> extends _HashFieldBase
with
SetMixin<E>,
_HashBase,
_OperatorEqualsAndHashCode,
_LinkedHashSetMixin<E>,
_SetCreateIndexMixin<E>,
_UnmodifiableSetMixin<E>,
_ImmutableLinkedHashSetMixin<E>
implements LinkedHashSet<E> {
Set<R> cast<R>() => Set.castFrom<E, R>(this, newSet: _newEmpty);
static Set<R> _newEmpty<R>() => WasmDefaultSet<R>();
// Returns a mutable set.
Set<E> toSet() => _newEmpty<E>()..addAll(this);
}
+14 -5
View File
@@ -2,7 +2,16 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import "dart:_compact_hash";
import "dart:_compact_hash"
show
DefaultMap,
DefaultSet,
CompactLinkedIdentityHashSet,
CompactLinkedCustomHashSet,
CompactLinkedCustomHashMap,
CompactLinkedIdentityHashMap,
MapInitializationFromWasmArray,
SetInitializationFromWasmArray;
import "dart:_internal" show patch;
import "dart:_wasm";
@@ -17,7 +26,7 @@ class LinkedHashMap<K, V> {
bool isValidKey(potentialKey)?}) {
if (isValidKey == null) {
if (hashCode == null && equals == null) {
return WasmDefaultMap<K, V>();
return DefaultMap<K, V>();
}
if (identical(identityHashCode, hashCode) &&
identical(identical, equals)) {
@@ -30,7 +39,7 @@ class LinkedHashMap<K, V> {
}
@pragma("wasm:entry-point")
static WasmDefaultMap<K, V> _default<K, V>() => WasmDefaultMap<K, V>();
static DefaultMap<K, V> _default<K, V>() => DefaultMap<K, V>();
@patch
factory LinkedHashMap.identity() => CompactLinkedIdentityHashMap<K, V>();
@@ -45,7 +54,7 @@ class LinkedHashSet<E> {
bool isValidKey(potentialKey)?}) {
if (isValidKey == null) {
if (hashCode == null && equals == null) {
return WasmDefaultSet<E>();
return DefaultSet<E>();
}
if (identical(identityHashCode, hashCode) &&
identical(identical, equals)) {
@@ -58,7 +67,7 @@ class LinkedHashSet<E> {
}
@pragma("wasm:entry-point")
static WasmDefaultSet<E> _default<E>() => WasmDefaultSet<E>();
static DefaultSet<E> _default<E>() => DefaultSet<E>();
@patch
factory LinkedHashSet.identity() => CompactLinkedIdentityHashSet<E>();
+8
View File
@@ -1065,3 +1065,11 @@ bool isToStringVisiting(Object object) {
///
/// Returns a future containing the result of the entry point method.
external Future<Object?> loadDynamicModule({Uri? uri, Uint8List? bytes});
/// Helper class to create `bool Function(Object?)` functions which
/// perform an `v is T` type test.
///
/// Intended use: `TypeTest<T>().test`.
class TypeTest<T> {
bool test(Object? v) => v is T;
}
+6 -4
View File
@@ -9,6 +9,9 @@
"_builtin": {
"uri": "_internal/vm/bin/builtin.dart"
},
"_compact_hash": {
"uri": "_internal/vm_shared/lib/compact_hash.dart"
},
"_internal": {
"uri": "internal/internal.dart",
"patches": [
@@ -25,7 +28,6 @@
"uri": "collection/collection.dart",
"patches": [
"_internal/vm_shared/lib/collection_patch.dart",
"_internal/vm_shared/lib/compact_hash.dart",
"_internal/vm/lib/hash_factories.dart"
]
},
@@ -248,12 +250,12 @@
"_boxed_double": {
"uri": "_internal/wasm/lib/boxed_double.dart"
},
"_error_utils": {
"uri": "_internal/wasm/lib/error_utils.dart"
},
"_compact_hash": {
"uri": "_internal/wasm/lib/compact_hash.dart"
},
"_error_utils": {
"uri": "_internal/wasm/lib/error_utils.dart"
},
"_http": {
"uri": "_http/http.dart"
},
+5 -3
View File
@@ -19,6 +19,9 @@ vm_common:
_builtin:
uri: "_internal/vm/bin/builtin.dart"
_compact_hash:
uri: "_internal/vm_shared/lib/compact_hash.dart"
_internal:
uri: "internal/internal.dart"
patches:
@@ -33,7 +36,6 @@ vm_common:
uri: "collection/collection.dart"
patches:
- "_internal/vm_shared/lib/collection_patch.dart"
- "_internal/vm_shared/lib/compact_hash.dart"
- "_internal/vm/lib/hash_factories.dart"
concurrent:
@@ -211,10 +213,10 @@ wasm_common:
uri: _internal/wasm/lib/boxed_int.dart
_boxed_double:
uri: _internal/wasm/lib/boxed_double.dart
_error_utils:
uri: _internal/wasm/lib/error_utils.dart
_compact_hash:
uri: _internal/wasm/lib/compact_hash.dart
_error_utils:
uri: _internal/wasm/lib/error_utils.dart
_http:
uri: _http/http.dart
_internal: