Version 2.15.0-83.0.dev
Merge commit '2b5adb7231e81366eade1b14761593f2c3cf03ef' into 'dev'
diff --git a/pkg/front_end/lib/src/fasta/source/source_loader.dart b/pkg/front_end/lib/src/fasta/source/source_loader.dart
index ea3cf9b..308ab12 100644
--- a/pkg/front_end/lib/src/fasta/source/source_loader.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_loader.dart
@@ -1589,10 +1589,6 @@
void operator []=(K key, V value) {}
}
-abstract class _ImmutableMap<K, V> implements Map<K, V> {
- dynamic _kvPairs;
-}
-
abstract class pragma {
String name;
Object options;
diff --git a/pkg/front_end/testcases/agnostic/map.dart.strong.expect b/pkg/front_end/testcases/agnostic/map.dart.strong.expect
index 4802fa3..a399067 100644
--- a/pkg/front_end/testcases/agnostic/map.dart.strong.expect
+++ b/pkg/front_end/testcases/agnostic/map.dart.strong.expect
@@ -4,7 +4,7 @@
static const field core::List<core::int> a = #C1;
static const field core::List<core::int?> b = #C2;
-static const field core::Map<core::List<core::int?>, core::int> c = #C6;
+static const field core::Map<core::List<core::int?>, core::int> c = #C5;
static method main() → dynamic {}
constants {
@@ -12,6 +12,5 @@
#C2 = <core::int?>[]
#C3 = 0
#C4 = 1
- #C5 = <dynamic>[#C1, #C3, #C2, #C4]
- #C6 = core::_ImmutableMap<core::List<core::int?>, core::int> {_kvPairs:#C5}
+ #C5 = <core::List<core::int?>, core::int>{#C1:#C3, #C2:#C4)
}
diff --git a/pkg/front_end/testcases/agnostic/map.dart.strong.transformed.expect b/pkg/front_end/testcases/agnostic/map.dart.strong.transformed.expect
index 4802fa3..a399067 100644
--- a/pkg/front_end/testcases/agnostic/map.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/agnostic/map.dart.strong.transformed.expect
@@ -4,7 +4,7 @@
static const field core::List<core::int> a = #C1;
static const field core::List<core::int?> b = #C2;
-static const field core::Map<core::List<core::int?>, core::int> c = #C6;
+static const field core::Map<core::List<core::int?>, core::int> c = #C5;
static method main() → dynamic {}
constants {
@@ -12,6 +12,5 @@
#C2 = <core::int?>[]
#C3 = 0
#C4 = 1
- #C5 = <dynamic>[#C1, #C3, #C2, #C4]
- #C6 = core::_ImmutableMap<core::List<core::int?>, core::int> {_kvPairs:#C5}
+ #C5 = <core::List<core::int?>, core::int>{#C1:#C3, #C2:#C4)
}
diff --git a/pkg/front_end/testcases/agnostic/map.dart.weak.expect b/pkg/front_end/testcases/agnostic/map.dart.weak.expect
index 2104776..70e1f24 100644
--- a/pkg/front_end/testcases/agnostic/map.dart.weak.expect
+++ b/pkg/front_end/testcases/agnostic/map.dart.weak.expect
@@ -4,7 +4,7 @@
static const field core::List<core::int> a = #C1;
static const field core::List<core::int?> b = #C2;
-static const field core::Map<core::List<core::int?>, core::int> c = #C6;
+static const field core::Map<core::List<core::int?>, core::int> c = #C5;
static method main() → dynamic {}
constants {
@@ -12,6 +12,5 @@
#C2 = <core::int?>[]
#C3 = 0
#C4 = 1
- #C5 = <dynamic>[#C1, #C3, #C2, #C4]
- #C6 = core::_ImmutableMap<core::List<core::int?>*, core::int*> {_kvPairs:#C5}
+ #C5 = <core::List<core::int?>*, core::int*>{#C1:#C3, #C2:#C4)
}
diff --git a/pkg/front_end/testcases/agnostic/map.dart.weak.outline.expect b/pkg/front_end/testcases/agnostic/map.dart.weak.outline.expect
index 9a50a62..8309821 100644
--- a/pkg/front_end/testcases/agnostic/map.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/agnostic/map.dart.weak.outline.expect
@@ -12,5 +12,5 @@
Extra constant evaluation status:
Evaluated: ListLiteral @ org-dartlang-testcase:///map.dart:5:16 -> ListConstant(const <int*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///map.dart:6:17 -> ListConstant(const <int?>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///map.dart:7:11 -> InstanceConstant(const _ImmutableMap<List<int?>*, int*>{_ImmutableMap._kvPairs: const <dynamic>[const <int*>[], 0, const <int?>[], 1]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///map.dart:7:11 -> MapConstant(const <List<int?>*, int*>{const <int*>[]: 0, const <int?>[]: 1})
Extra constant evaluation: evaluated: 3, effectively constant: 3
diff --git a/pkg/front_end/testcases/agnostic/map.dart.weak.transformed.expect b/pkg/front_end/testcases/agnostic/map.dart.weak.transformed.expect
index 2104776..70e1f24 100644
--- a/pkg/front_end/testcases/agnostic/map.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/agnostic/map.dart.weak.transformed.expect
@@ -4,7 +4,7 @@
static const field core::List<core::int> a = #C1;
static const field core::List<core::int?> b = #C2;
-static const field core::Map<core::List<core::int?>, core::int> c = #C6;
+static const field core::Map<core::List<core::int?>, core::int> c = #C5;
static method main() → dynamic {}
constants {
@@ -12,6 +12,5 @@
#C2 = <core::int?>[]
#C3 = 0
#C4 = 1
- #C5 = <dynamic>[#C1, #C3, #C2, #C4]
- #C6 = core::_ImmutableMap<core::List<core::int?>*, core::int*> {_kvPairs:#C5}
+ #C5 = <core::List<core::int?>*, core::int*>{#C1:#C3, #C2:#C4)
}
diff --git a/pkg/front_end/testcases/agnostic/set.dart.strong.expect b/pkg/front_end/testcases/agnostic/set.dart.strong.expect
index 9da7c28..6113c8a 100644
--- a/pkg/front_end/testcases/agnostic/set.dart.strong.expect
+++ b/pkg/front_end/testcases/agnostic/set.dart.strong.expect
@@ -4,14 +4,11 @@
static const field core::List<core::int> a = #C1;
static const field core::List<core::int?> b = #C2;
-static const field core::Set<core::List<core::int?>> c = #C6;
+static const field core::Set<core::List<core::int?>> c = #C3;
static method main() → dynamic {}
constants {
#C1 = <core::int>[]
#C2 = <core::int?>[]
- #C3 = null
- #C4 = <dynamic>[#C1, #C3, #C2, #C3]
- #C5 = core::_ImmutableMap<core::List<core::int?>, Null> {_kvPairs:#C4}
- #C6 = col::_UnmodifiableSet<core::List<core::int?>> {_map:#C5}
+ #C3 = <core::List<core::int?>>{#C1, #C2}
}
diff --git a/pkg/front_end/testcases/agnostic/set.dart.strong.transformed.expect b/pkg/front_end/testcases/agnostic/set.dart.strong.transformed.expect
index 9da7c28..6113c8a 100644
--- a/pkg/front_end/testcases/agnostic/set.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/agnostic/set.dart.strong.transformed.expect
@@ -4,14 +4,11 @@
static const field core::List<core::int> a = #C1;
static const field core::List<core::int?> b = #C2;
-static const field core::Set<core::List<core::int?>> c = #C6;
+static const field core::Set<core::List<core::int?>> c = #C3;
static method main() → dynamic {}
constants {
#C1 = <core::int>[]
#C2 = <core::int?>[]
- #C3 = null
- #C4 = <dynamic>[#C1, #C3, #C2, #C3]
- #C5 = core::_ImmutableMap<core::List<core::int?>, Null> {_kvPairs:#C4}
- #C6 = col::_UnmodifiableSet<core::List<core::int?>> {_map:#C5}
+ #C3 = <core::List<core::int?>>{#C1, #C2}
}
diff --git a/pkg/front_end/testcases/agnostic/set.dart.weak.expect b/pkg/front_end/testcases/agnostic/set.dart.weak.expect
index 8c54370..add03f5 100644
--- a/pkg/front_end/testcases/agnostic/set.dart.weak.expect
+++ b/pkg/front_end/testcases/agnostic/set.dart.weak.expect
@@ -4,14 +4,11 @@
static const field core::List<core::int> a = #C1;
static const field core::List<core::int?> b = #C2;
-static const field core::Set<core::List<core::int?>> c = #C6;
+static const field core::Set<core::List<core::int?>> c = #C3;
static method main() → dynamic {}
constants {
#C1 = <core::int*>[]
#C2 = <core::int?>[]
- #C3 = null
- #C4 = <dynamic>[#C1, #C3, #C2, #C3]
- #C5 = core::_ImmutableMap<core::List<core::int?>*, Null> {_kvPairs:#C4}
- #C6 = col::_UnmodifiableSet<core::List<core::int?>*> {_map:#C5}
+ #C3 = <core::List<core::int?>*>{#C1, #C2}
}
diff --git a/pkg/front_end/testcases/agnostic/set.dart.weak.outline.expect b/pkg/front_end/testcases/agnostic/set.dart.weak.outline.expect
index 62e6f76..a7a0c26 100644
--- a/pkg/front_end/testcases/agnostic/set.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/agnostic/set.dart.weak.outline.expect
@@ -12,5 +12,5 @@
Extra constant evaluation status:
Evaluated: ListLiteral @ org-dartlang-testcase:///set.dart:5:16 -> ListConstant(const <int*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///set.dart:6:17 -> ListConstant(const <int?>[])
-Evaluated: SetLiteral @ org-dartlang-testcase:///set.dart:7:11 -> InstanceConstant(const _UnmodifiableSet<List<int?>*>{_UnmodifiableSet._map: const _ImmutableMap<List<int?>*, Null>{_ImmutableMap._kvPairs: const <dynamic>[const <int*>[], null, const <int?>[], null]}})
+Evaluated: SetLiteral @ org-dartlang-testcase:///set.dart:7:11 -> SetConstant(const <List<int?>*>{const <int*>[], const <int?>[]})
Extra constant evaluation: evaluated: 3, effectively constant: 3
diff --git a/pkg/front_end/testcases/agnostic/set.dart.weak.transformed.expect b/pkg/front_end/testcases/agnostic/set.dart.weak.transformed.expect
index 8c54370..add03f5 100644
--- a/pkg/front_end/testcases/agnostic/set.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/agnostic/set.dart.weak.transformed.expect
@@ -4,14 +4,11 @@
static const field core::List<core::int> a = #C1;
static const field core::List<core::int?> b = #C2;
-static const field core::Set<core::List<core::int?>> c = #C6;
+static const field core::Set<core::List<core::int?>> c = #C3;
static method main() → dynamic {}
constants {
#C1 = <core::int*>[]
#C2 = <core::int?>[]
- #C3 = null
- #C4 = <dynamic>[#C1, #C3, #C2, #C3]
- #C5 = core::_ImmutableMap<core::List<core::int?>*, Null> {_kvPairs:#C4}
- #C6 = col::_UnmodifiableSet<core::List<core::int?>*> {_map:#C5}
+ #C3 = <core::List<core::int?>*>{#C1, #C2}
}
diff --git a/pkg/front_end/testcases/const_functions/const_functions_map.dart.strong.expect b/pkg/front_end/testcases/const_functions/const_functions_map.dart.strong.expect
index f35acb3..4ab4b2c 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_map.dart.strong.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_map.dart.strong.expect
@@ -8,7 +8,7 @@
static const field core::Object? var1 = #C1;
static const field core::Object? var2 = #C2;
static const field core::Object? var3 = #C3;
-static const field core::Map<core::String, core::int> map = #C10;
+static const field core::Map<core::String, core::int> map = #C9;
static const field core::Object? var4 = #C2;
static const field core::Object? var5 = #C6;
static const field core::Object? var6 = #C8;
@@ -17,7 +17,7 @@
return map.{core::Map::[]}(key){(core::Object?) → core::Object?};
}
static method fn2() → core::int? {
- return (#C13).{core::Map::[]}("key"){(core::Object?) → core::int?};
+ return (#C11).{core::Map::[]}("key"){(core::Object?) → core::int?};
}
static method main() → void {
exp::Expect::equals(#C1, "val");
@@ -38,9 +38,7 @@
#C6 = 3
#C7 = "key3"
#C8 = 4
- #C9 = <dynamic>[#C4, #C2, #C5, #C6, #C7, #C8]
- #C10 = core::_ImmutableMap<core::String, core::int> {_kvPairs:#C9}
- #C11 = "key"
- #C12 = <dynamic>[#C11, #C2]
- #C13 = core::_ImmutableMap<core::String, core::int> {_kvPairs:#C12}
+ #C9 = <core::String, core::int>{#C4:#C2, #C5:#C6, #C7:#C8)
+ #C10 = "key"
+ #C11 = <core::String, core::int>{#C10:#C2)
}
diff --git a/pkg/front_end/testcases/const_functions/const_functions_map.dart.strong.transformed.expect b/pkg/front_end/testcases/const_functions/const_functions_map.dart.strong.transformed.expect
index f35acb3..4ab4b2c 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_map.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_map.dart.strong.transformed.expect
@@ -8,7 +8,7 @@
static const field core::Object? var1 = #C1;
static const field core::Object? var2 = #C2;
static const field core::Object? var3 = #C3;
-static const field core::Map<core::String, core::int> map = #C10;
+static const field core::Map<core::String, core::int> map = #C9;
static const field core::Object? var4 = #C2;
static const field core::Object? var5 = #C6;
static const field core::Object? var6 = #C8;
@@ -17,7 +17,7 @@
return map.{core::Map::[]}(key){(core::Object?) → core::Object?};
}
static method fn2() → core::int? {
- return (#C13).{core::Map::[]}("key"){(core::Object?) → core::int?};
+ return (#C11).{core::Map::[]}("key"){(core::Object?) → core::int?};
}
static method main() → void {
exp::Expect::equals(#C1, "val");
@@ -38,9 +38,7 @@
#C6 = 3
#C7 = "key3"
#C8 = 4
- #C9 = <dynamic>[#C4, #C2, #C5, #C6, #C7, #C8]
- #C10 = core::_ImmutableMap<core::String, core::int> {_kvPairs:#C9}
- #C11 = "key"
- #C12 = <dynamic>[#C11, #C2]
- #C13 = core::_ImmutableMap<core::String, core::int> {_kvPairs:#C12}
+ #C9 = <core::String, core::int>{#C4:#C2, #C5:#C6, #C7:#C8)
+ #C10 = "key"
+ #C11 = <core::String, core::int>{#C10:#C2)
}
diff --git a/pkg/front_end/testcases/const_functions/const_functions_map.dart.weak.expect b/pkg/front_end/testcases/const_functions/const_functions_map.dart.weak.expect
index a1dcfec..07bb8d3 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_map.dart.weak.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_map.dart.weak.expect
@@ -8,7 +8,7 @@
static const field core::Object? var1 = #C1;
static const field core::Object? var2 = #C2;
static const field core::Object? var3 = #C3;
-static const field core::Map<core::String, core::int> map = #C10;
+static const field core::Map<core::String, core::int> map = #C9;
static const field core::Object? var4 = #C2;
static const field core::Object? var5 = #C6;
static const field core::Object? var6 = #C8;
@@ -17,7 +17,7 @@
return map.{core::Map::[]}(key){(core::Object?) → core::Object?};
}
static method fn2() → core::int? {
- return (#C13).{core::Map::[]}("key"){(core::Object?) → core::int?};
+ return (#C11).{core::Map::[]}("key"){(core::Object?) → core::int?};
}
static method main() → void {
exp::Expect::equals(#C1, "val");
@@ -38,9 +38,7 @@
#C6 = 3
#C7 = "key3"
#C8 = 4
- #C9 = <dynamic>[#C4, #C2, #C5, #C6, #C7, #C8]
- #C10 = core::_ImmutableMap<core::String*, core::int*> {_kvPairs:#C9}
- #C11 = "key"
- #C12 = <dynamic>[#C11, #C2]
- #C13 = core::_ImmutableMap<core::String*, core::int*> {_kvPairs:#C12}
+ #C9 = <core::String*, core::int*>{#C4:#C2, #C5:#C6, #C7:#C8)
+ #C10 = "key"
+ #C11 = <core::String*, core::int*>{#C10:#C2)
}
diff --git a/pkg/front_end/testcases/const_functions/const_functions_map.dart.weak.outline.expect b/pkg/front_end/testcases/const_functions/const_functions_map.dart.weak.outline.expect
index 87b21de..7dfb681 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_map.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_map.dart.weak.outline.expect
@@ -21,11 +21,11 @@
Extra constant evaluation status:
-Evaluated: MapLiteral @ org-dartlang-testcase:///const_functions_map.dart:9:17 -> InstanceConstant(const _ImmutableMap<Object*, Object*>{_ImmutableMap._kvPairs: const <dynamic>["key", "val"]})
-Evaluated: MapLiteral @ org-dartlang-testcase:///const_functions_map.dart:11:17 -> InstanceConstant(const _ImmutableMap<Object*, Object*>{_ImmutableMap._kvPairs: const <dynamic>["key", 2]})
-Evaluated: MapLiteral @ org-dartlang-testcase:///const_functions_map.dart:13:17 -> InstanceConstant(const _ImmutableMap<Object*, Object*>{_ImmutableMap._kvPairs: const <dynamic>["key", 2]})
-Evaluated: MapLiteral @ org-dartlang-testcase:///const_functions_map.dart:15:13 -> InstanceConstant(const _ImmutableMap<String*, int*>{_ImmutableMap._kvPairs: const <dynamic>["key1", 2, "key2", 3, "key3", 4]})
-Evaluated: StaticGet @ org-dartlang-testcase:///const_functions_map.dart:16:17 -> InstanceConstant(const _ImmutableMap<String*, int*>{_ImmutableMap._kvPairs: const <dynamic>["key1", 2, "key2", 3, "key3", 4]})
-Evaluated: StaticGet @ org-dartlang-testcase:///const_functions_map.dart:17:17 -> InstanceConstant(const _ImmutableMap<String*, int*>{_ImmutableMap._kvPairs: const <dynamic>["key1", 2, "key2", 3, "key3", 4]})
-Evaluated: StaticGet @ org-dartlang-testcase:///const_functions_map.dart:18:17 -> InstanceConstant(const _ImmutableMap<String*, int*>{_ImmutableMap._kvPairs: const <dynamic>["key1", 2, "key2", 3, "key3", 4]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///const_functions_map.dart:9:17 -> MapConstant(const <Object*, Object*>{"key": "val"})
+Evaluated: MapLiteral @ org-dartlang-testcase:///const_functions_map.dart:11:17 -> MapConstant(const <Object*, Object*>{"key": 2})
+Evaluated: MapLiteral @ org-dartlang-testcase:///const_functions_map.dart:13:17 -> MapConstant(const <Object*, Object*>{"key": 2})
+Evaluated: MapLiteral @ org-dartlang-testcase:///const_functions_map.dart:15:13 -> MapConstant(const <String*, int*>{"key1": 2, "key2": 3, "key3": 4})
+Evaluated: StaticGet @ org-dartlang-testcase:///const_functions_map.dart:16:17 -> MapConstant(const <String*, int*>{"key1": 2, "key2": 3, "key3": 4})
+Evaluated: StaticGet @ org-dartlang-testcase:///const_functions_map.dart:17:17 -> MapConstant(const <String*, int*>{"key1": 2, "key2": 3, "key3": 4})
+Evaluated: StaticGet @ org-dartlang-testcase:///const_functions_map.dart:18:17 -> MapConstant(const <String*, int*>{"key1": 2, "key2": 3, "key3": 4})
Extra constant evaluation: evaluated: 14, effectively constant: 7
diff --git a/pkg/front_end/testcases/const_functions/const_functions_map.dart.weak.transformed.expect b/pkg/front_end/testcases/const_functions/const_functions_map.dart.weak.transformed.expect
index a1dcfec..07bb8d3 100644
--- a/pkg/front_end/testcases/const_functions/const_functions_map.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/const_functions/const_functions_map.dart.weak.transformed.expect
@@ -8,7 +8,7 @@
static const field core::Object? var1 = #C1;
static const field core::Object? var2 = #C2;
static const field core::Object? var3 = #C3;
-static const field core::Map<core::String, core::int> map = #C10;
+static const field core::Map<core::String, core::int> map = #C9;
static const field core::Object? var4 = #C2;
static const field core::Object? var5 = #C6;
static const field core::Object? var6 = #C8;
@@ -17,7 +17,7 @@
return map.{core::Map::[]}(key){(core::Object?) → core::Object?};
}
static method fn2() → core::int? {
- return (#C13).{core::Map::[]}("key"){(core::Object?) → core::int?};
+ return (#C11).{core::Map::[]}("key"){(core::Object?) → core::int?};
}
static method main() → void {
exp::Expect::equals(#C1, "val");
@@ -38,9 +38,7 @@
#C6 = 3
#C7 = "key3"
#C8 = 4
- #C9 = <dynamic>[#C4, #C2, #C5, #C6, #C7, #C8]
- #C10 = core::_ImmutableMap<core::String*, core::int*> {_kvPairs:#C9}
- #C11 = "key"
- #C12 = <dynamic>[#C11, #C2]
- #C13 = core::_ImmutableMap<core::String*, core::int*> {_kvPairs:#C12}
+ #C9 = <core::String*, core::int*>{#C4:#C2, #C5:#C6, #C7:#C8)
+ #C10 = "key"
+ #C11 = <core::String*, core::int*>{#C10:#C2)
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.strong.expect
index 2c377ec..b88cd017 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.strong.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.strong.expect
@@ -23,35 +23,34 @@
static method m<X extends core::Object? = dynamic>(self::m::X% x) → core::List<self::m::X%>
return <self::m::X%>[x];
static method FunctionApplier|applyAndPrint(lowered final core::Function #this, core::List<core::Object?> positionalArguments) → void
- return core::print(core::Function::apply(#this, positionalArguments, #C2));
+ return core::print(core::Function::apply(#this, positionalArguments, #C1));
static method FunctionApplier|get#applyAndPrint(lowered final core::Function #this) → (core::List<core::Object?>) → void
return (core::List<core::Object?> positionalArguments) → void => self::FunctionApplier|applyAndPrint(#this, positionalArguments);
static method test() → dynamic {
- (#C4).{core::Object::toString}(){() → core::String};
+ (#C3).{core::Object::toString}(){() → core::String};
}
static method main() → void {
self::A<dynamic> a = new self::A::•<dynamic>();
self::FunctionApplier|applyAndPrint(a.{self::A::m}{<X extends core::Object? = dynamic>(X%) → core::List<X%>}<core::int>, <core::Object?>[2]);
self::FunctionApplier|applyAndPrint(a.{self::A::m}{<X extends core::Object? = dynamic>(X%) → core::List<X%>}<core::String>, <core::Object?>["three"]);
- self::FunctionApplier|applyAndPrint(#C6, <core::Object?>[2]);
- self::FunctionApplier|applyAndPrint(#C7, <core::Object?>["three"]);
- self::FunctionApplier|applyAndPrint(#C9, <core::Object?>[2]);
- self::FunctionApplier|applyAndPrint(#C10, <core::Object?>["three"]);
- self::FunctionApplier|applyAndPrint(#C6, <core::Object?>[2]);
- self::FunctionApplier|applyAndPrint(#C7, <core::Object?>["three"]);
+ self::FunctionApplier|applyAndPrint(#C5, <core::Object?>[2]);
+ self::FunctionApplier|applyAndPrint(#C6, <core::Object?>["three"]);
+ self::FunctionApplier|applyAndPrint(#C8, <core::Object?>[2]);
+ self::FunctionApplier|applyAndPrint(#C9, <core::Object?>["three"]);
+ self::FunctionApplier|applyAndPrint(#C5, <core::Object?>[2]);
+ self::FunctionApplier|applyAndPrint(#C6, <core::Object?>["three"]);
+ (#C2).{core::Object::toString}(){() → core::String};
(#C3).{core::Object::toString}(){() → core::String};
- (#C4).{core::Object::toString}(){() → core::String};
}
constants {
- #C1 = <dynamic>[]
- #C2 = core::_ImmutableMap<core::Symbol, dynamic> {_kvPairs:#C1}
- #C3 = constructor-tearoff self::A::named
- #C4 = instantiation self::A::named <core::int>
- #C5 = static-tearoff self::A::n
- #C6 = instantiation self::A::n <core::int>
- #C7 = instantiation self::A::n <core::String>
- #C8 = static-tearoff self::m
- #C9 = instantiation self::m <core::int>
- #C10 = instantiation self::m <core::String>
+ #C1 = <core::Symbol, dynamic>{)
+ #C2 = constructor-tearoff self::A::named
+ #C3 = instantiation self::A::named <core::int>
+ #C4 = static-tearoff self::A::n
+ #C5 = instantiation self::A::n <core::int>
+ #C6 = instantiation self::A::n <core::String>
+ #C7 = static-tearoff self::m
+ #C8 = instantiation self::m <core::int>
+ #C9 = instantiation self::m <core::String>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.strong.transformed.expect
index 67fea71..277922f 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.strong.transformed.expect
@@ -23,35 +23,34 @@
static method m<X extends core::Object? = dynamic>(self::m::X% x) → core::List<self::m::X%>
return core::_GrowableList::_literal1<self::m::X%>(x);
static method FunctionApplier|applyAndPrint(lowered final core::Function #this, core::List<core::Object?> positionalArguments) → void
- return core::print(core::Function::apply(#this, positionalArguments, #C2));
+ return core::print(core::Function::apply(#this, positionalArguments, #C1));
static method FunctionApplier|get#applyAndPrint(lowered final core::Function #this) → (core::List<core::Object?>) → void
return (core::List<core::Object?> positionalArguments) → void => self::FunctionApplier|applyAndPrint(#this, positionalArguments);
static method test() → dynamic {
- (#C4).{core::Object::toString}(){() → core::String};
+ (#C3).{core::Object::toString}(){() → core::String};
}
static method main() → void {
self::A<dynamic> a = new self::A::•<dynamic>();
self::FunctionApplier|applyAndPrint(a.{self::A::m}{<X extends core::Object? = dynamic>(X%) → core::List<X%>}<core::int>, core::_GrowableList::_literal1<core::Object?>(2));
self::FunctionApplier|applyAndPrint(a.{self::A::m}{<X extends core::Object? = dynamic>(X%) → core::List<X%>}<core::String>, core::_GrowableList::_literal1<core::Object?>("three"));
- self::FunctionApplier|applyAndPrint(#C6, core::_GrowableList::_literal1<core::Object?>(2));
- self::FunctionApplier|applyAndPrint(#C7, core::_GrowableList::_literal1<core::Object?>("three"));
- self::FunctionApplier|applyAndPrint(#C9, core::_GrowableList::_literal1<core::Object?>(2));
- self::FunctionApplier|applyAndPrint(#C10, core::_GrowableList::_literal1<core::Object?>("three"));
- self::FunctionApplier|applyAndPrint(#C6, core::_GrowableList::_literal1<core::Object?>(2));
- self::FunctionApplier|applyAndPrint(#C7, core::_GrowableList::_literal1<core::Object?>("three"));
+ self::FunctionApplier|applyAndPrint(#C5, core::_GrowableList::_literal1<core::Object?>(2));
+ self::FunctionApplier|applyAndPrint(#C6, core::_GrowableList::_literal1<core::Object?>("three"));
+ self::FunctionApplier|applyAndPrint(#C8, core::_GrowableList::_literal1<core::Object?>(2));
+ self::FunctionApplier|applyAndPrint(#C9, core::_GrowableList::_literal1<core::Object?>("three"));
+ self::FunctionApplier|applyAndPrint(#C5, core::_GrowableList::_literal1<core::Object?>(2));
+ self::FunctionApplier|applyAndPrint(#C6, core::_GrowableList::_literal1<core::Object?>("three"));
+ (#C2).{core::Object::toString}(){() → core::String};
(#C3).{core::Object::toString}(){() → core::String};
- (#C4).{core::Object::toString}(){() → core::String};
}
constants {
- #C1 = <dynamic>[]
- #C2 = core::_ImmutableMap<core::Symbol, dynamic> {_kvPairs:#C1}
- #C3 = constructor-tearoff self::A::named
- #C4 = instantiation self::A::named <core::int>
- #C5 = static-tearoff self::A::n
- #C6 = instantiation self::A::n <core::int>
- #C7 = instantiation self::A::n <core::String>
- #C8 = static-tearoff self::m
- #C9 = instantiation self::m <core::int>
- #C10 = instantiation self::m <core::String>
+ #C1 = <core::Symbol, dynamic>{)
+ #C2 = constructor-tearoff self::A::named
+ #C3 = instantiation self::A::named <core::int>
+ #C4 = static-tearoff self::A::n
+ #C5 = instantiation self::A::n <core::int>
+ #C6 = instantiation self::A::n <core::String>
+ #C7 = static-tearoff self::m
+ #C8 = instantiation self::m <core::int>
+ #C9 = instantiation self::m <core::String>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.weak.expect
index a112778..365cc1d 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.weak.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.weak.expect
@@ -23,35 +23,34 @@
static method m<X extends core::Object? = dynamic>(self::m::X% x) → core::List<self::m::X%>
return <self::m::X%>[x];
static method FunctionApplier|applyAndPrint(lowered final core::Function #this, core::List<core::Object?> positionalArguments) → void
- return core::print(core::Function::apply(#this, positionalArguments, #C2));
+ return core::print(core::Function::apply(#this, positionalArguments, #C1));
static method FunctionApplier|get#applyAndPrint(lowered final core::Function #this) → (core::List<core::Object?>) → void
return (core::List<core::Object?> positionalArguments) → void => self::FunctionApplier|applyAndPrint(#this, positionalArguments);
static method test() → dynamic {
- (#C4).{core::Object::toString}(){() → core::String};
+ (#C3).{core::Object::toString}(){() → core::String};
}
static method main() → void {
self::A<dynamic> a = new self::A::•<dynamic>();
self::FunctionApplier|applyAndPrint(a.{self::A::m}{<X extends core::Object? = dynamic>(X%) → core::List<X%>}<core::int>, <core::Object?>[2]);
self::FunctionApplier|applyAndPrint(a.{self::A::m}{<X extends core::Object? = dynamic>(X%) → core::List<X%>}<core::String>, <core::Object?>["three"]);
- self::FunctionApplier|applyAndPrint(#C6, <core::Object?>[2]);
- self::FunctionApplier|applyAndPrint(#C7, <core::Object?>["three"]);
- self::FunctionApplier|applyAndPrint(#C9, <core::Object?>[2]);
- self::FunctionApplier|applyAndPrint(#C10, <core::Object?>["three"]);
- self::FunctionApplier|applyAndPrint(#C6, <core::Object?>[2]);
- self::FunctionApplier|applyAndPrint(#C7, <core::Object?>["three"]);
+ self::FunctionApplier|applyAndPrint(#C5, <core::Object?>[2]);
+ self::FunctionApplier|applyAndPrint(#C6, <core::Object?>["three"]);
+ self::FunctionApplier|applyAndPrint(#C8, <core::Object?>[2]);
+ self::FunctionApplier|applyAndPrint(#C9, <core::Object?>["three"]);
+ self::FunctionApplier|applyAndPrint(#C5, <core::Object?>[2]);
+ self::FunctionApplier|applyAndPrint(#C6, <core::Object?>["three"]);
+ (#C2).{core::Object::toString}(){() → core::String};
(#C3).{core::Object::toString}(){() → core::String};
- (#C4).{core::Object::toString}(){() → core::String};
}
constants {
- #C1 = <dynamic>[]
- #C2 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C1}
- #C3 = constructor-tearoff self::A::named
- #C4 = instantiation self::A::named <core::int*>
- #C5 = static-tearoff self::A::n
- #C6 = instantiation self::A::n <core::int*>
- #C7 = instantiation self::A::n <core::String*>
- #C8 = static-tearoff self::m
- #C9 = instantiation self::m <core::int*>
- #C10 = instantiation self::m <core::String*>
+ #C1 = <core::Symbol*, dynamic>{)
+ #C2 = constructor-tearoff self::A::named
+ #C3 = instantiation self::A::named <core::int*>
+ #C4 = static-tearoff self::A::n
+ #C5 = instantiation self::A::n <core::int*>
+ #C6 = instantiation self::A::n <core::String*>
+ #C7 = static-tearoff self::m
+ #C8 = instantiation self::m <core::int*>
+ #C9 = instantiation self::m <core::String*>
}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.weak.transformed.expect
index ca0d633..8e69dba 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue46719.dart.weak.transformed.expect
@@ -23,35 +23,34 @@
static method m<X extends core::Object? = dynamic>(self::m::X% x) → core::List<self::m::X%>
return core::_GrowableList::_literal1<self::m::X%>(x);
static method FunctionApplier|applyAndPrint(lowered final core::Function #this, core::List<core::Object?> positionalArguments) → void
- return core::print(core::Function::apply(#this, positionalArguments, #C2));
+ return core::print(core::Function::apply(#this, positionalArguments, #C1));
static method FunctionApplier|get#applyAndPrint(lowered final core::Function #this) → (core::List<core::Object?>) → void
return (core::List<core::Object?> positionalArguments) → void => self::FunctionApplier|applyAndPrint(#this, positionalArguments);
static method test() → dynamic {
- (#C4).{core::Object::toString}(){() → core::String};
+ (#C3).{core::Object::toString}(){() → core::String};
}
static method main() → void {
self::A<dynamic> a = new self::A::•<dynamic>();
self::FunctionApplier|applyAndPrint(a.{self::A::m}{<X extends core::Object? = dynamic>(X%) → core::List<X%>}<core::int>, core::_GrowableList::_literal1<core::Object?>(2));
self::FunctionApplier|applyAndPrint(a.{self::A::m}{<X extends core::Object? = dynamic>(X%) → core::List<X%>}<core::String>, core::_GrowableList::_literal1<core::Object?>("three"));
- self::FunctionApplier|applyAndPrint(#C6, core::_GrowableList::_literal1<core::Object?>(2));
- self::FunctionApplier|applyAndPrint(#C7, core::_GrowableList::_literal1<core::Object?>("three"));
- self::FunctionApplier|applyAndPrint(#C9, core::_GrowableList::_literal1<core::Object?>(2));
- self::FunctionApplier|applyAndPrint(#C10, core::_GrowableList::_literal1<core::Object?>("three"));
- self::FunctionApplier|applyAndPrint(#C6, core::_GrowableList::_literal1<core::Object?>(2));
- self::FunctionApplier|applyAndPrint(#C7, core::_GrowableList::_literal1<core::Object?>("three"));
+ self::FunctionApplier|applyAndPrint(#C5, core::_GrowableList::_literal1<core::Object?>(2));
+ self::FunctionApplier|applyAndPrint(#C6, core::_GrowableList::_literal1<core::Object?>("three"));
+ self::FunctionApplier|applyAndPrint(#C8, core::_GrowableList::_literal1<core::Object?>(2));
+ self::FunctionApplier|applyAndPrint(#C9, core::_GrowableList::_literal1<core::Object?>("three"));
+ self::FunctionApplier|applyAndPrint(#C5, core::_GrowableList::_literal1<core::Object?>(2));
+ self::FunctionApplier|applyAndPrint(#C6, core::_GrowableList::_literal1<core::Object?>("three"));
+ (#C2).{core::Object::toString}(){() → core::String};
(#C3).{core::Object::toString}(){() → core::String};
- (#C4).{core::Object::toString}(){() → core::String};
}
constants {
- #C1 = <dynamic>[]
- #C2 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C1}
- #C3 = constructor-tearoff self::A::named
- #C4 = instantiation self::A::named <core::int*>
- #C5 = static-tearoff self::A::n
- #C6 = instantiation self::A::n <core::int*>
- #C7 = instantiation self::A::n <core::String*>
- #C8 = static-tearoff self::m
- #C9 = instantiation self::m <core::int*>
- #C10 = instantiation self::m <core::String*>
+ #C1 = <core::Symbol*, dynamic>{)
+ #C2 = constructor-tearoff self::A::named
+ #C3 = instantiation self::A::named <core::int*>
+ #C4 = static-tearoff self::A::n
+ #C5 = instantiation self::A::n <core::int*>
+ #C6 = instantiation self::A::n <core::String*>
+ #C7 = static-tearoff self::m
+ #C8 = instantiation self::m <core::int*>
+ #C9 = instantiation self::m <core::String*>
}
diff --git a/pkg/front_end/testcases/general/abstract_members.dart.weak.expect b/pkg/front_end/testcases/general/abstract_members.dart.weak.expect
index 67d0267..d874a11 100644
--- a/pkg/front_end/testcases/general/abstract_members.dart.weak.expect
+++ b/pkg/front_end/testcases/general/abstract_members.dart.weak.expect
@@ -431,7 +431,7 @@
#C1 = #interfaceMethod2
#C2 = <core::Type*>[]
#C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C4 = <core::Symbol*, dynamic>{)
#C5 = #abstractMethod
#C6 = #interfaceMethod1
#C7 = #interfaceMethod3
diff --git a/pkg/front_end/testcases/general/abstract_members.dart.weak.outline.expect b/pkg/front_end/testcases/general/abstract_members.dart.weak.outline.expect
index 49ba0ba..9685255 100644
--- a/pkg/front_end/testcases/general/abstract_members.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/abstract_members.dart.weak.outline.expect
@@ -428,29 +428,29 @@
Evaluated: SymbolLiteral @ org-dartlang-testcase:///abstract_members.dart:12:8 -> SymbolConstant(#interfaceMethod2)
Evaluated: ListLiteral @ org-dartlang-testcase:///abstract_members.dart:12:8 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///abstract_members.dart:12:8 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///abstract_members.dart:12:8 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///abstract_members.dart:12:8 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///abstract_members.dart:23:3 -> SymbolConstant(#abstractMethod)
Evaluated: ListLiteral @ org-dartlang-testcase:///abstract_members.dart:23:3 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///abstract_members.dart:23:3 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///abstract_members.dart:23:3 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///abstract_members.dart:23:3 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///abstract_members.dart:8:8 -> SymbolConstant(#interfaceMethod1)
Evaluated: ListLiteral @ org-dartlang-testcase:///abstract_members.dart:8:8 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///abstract_members.dart:8:8 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///abstract_members.dart:8:8 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///abstract_members.dart:8:8 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///abstract_members.dart:18:8 -> SymbolConstant(#interfaceMethod3)
Evaluated: ListLiteral @ org-dartlang-testcase:///abstract_members.dart:18:8 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///abstract_members.dart:18:8 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///abstract_members.dart:18:8 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///abstract_members.dart:18:8 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///abstract_members.dart:26:12 -> SymbolConstant(#property3=)
Evaluated: ListLiteral @ org-dartlang-testcase:///abstract_members.dart:26:12 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///abstract_members.dart:26:12 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///abstract_members.dart:26:12 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///abstract_members.dart:14:7 -> SymbolConstant(#interfaceMethod1=)
Evaluated: ListLiteral @ org-dartlang-testcase:///abstract_members.dart:14:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///abstract_members.dart:14:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///abstract_members.dart:14:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///abstract_members.dart:24:12 -> SymbolConstant(#property1=)
Evaluated: ListLiteral @ org-dartlang-testcase:///abstract_members.dart:24:12 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///abstract_members.dart:24:12 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///abstract_members.dart:24:12 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///abstract_members.dart:25:12 -> SymbolConstant(#property2=)
Evaluated: ListLiteral @ org-dartlang-testcase:///abstract_members.dart:25:12 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///abstract_members.dart:25:12 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///abstract_members.dart:25:12 -> MapConstant(const <Symbol*, dynamic>{})
Extra constant evaluation: evaluated: 73, effectively constant: 28
diff --git a/pkg/front_end/testcases/general/abstract_overrides_concrete_with_no_such_method.dart.weak.expect b/pkg/front_end/testcases/general/abstract_overrides_concrete_with_no_such_method.dart.weak.expect
index da16394..882db16 100644
--- a/pkg/front_end/testcases/general/abstract_overrides_concrete_with_no_such_method.dart.weak.expect
+++ b/pkg/front_end/testcases/general/abstract_overrides_concrete_with_no_such_method.dart.weak.expect
@@ -54,5 +54,5 @@
#C1 = #foo
#C2 = <core::Type*>[]
#C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C4 = <core::Symbol*, dynamic>{)
}
diff --git a/pkg/front_end/testcases/general/abstract_overrides_concrete_with_no_such_method.dart.weak.outline.expect b/pkg/front_end/testcases/general/abstract_overrides_concrete_with_no_such_method.dart.weak.outline.expect
index db26f68..41d6539 100644
--- a/pkg/front_end/testcases/general/abstract_overrides_concrete_with_no_such_method.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/abstract_overrides_concrete_with_no_such_method.dart.weak.outline.expect
@@ -52,5 +52,5 @@
Evaluated: SymbolLiteral @ org-dartlang-testcase:///abstract_overrides_concrete_with_no_such_method.dart:10:5 -> SymbolConstant(#foo)
Evaluated: ListLiteral @ org-dartlang-testcase:///abstract_overrides_concrete_with_no_such_method.dart:10:5 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///abstract_overrides_concrete_with_no_such_method.dart:10:5 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///abstract_overrides_concrete_with_no_such_method.dart:10:5 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///abstract_overrides_concrete_with_no_such_method.dart:10:5 -> MapConstant(const <Symbol*, dynamic>{})
Extra constant evaluation: evaluated: 9, effectively constant: 4
diff --git a/pkg/front_end/testcases/general/abstract_overrides_concrete_with_no_such_method.dart.weak.transformed.expect b/pkg/front_end/testcases/general/abstract_overrides_concrete_with_no_such_method.dart.weak.transformed.expect
index da16394..882db16 100644
--- a/pkg/front_end/testcases/general/abstract_overrides_concrete_with_no_such_method.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/abstract_overrides_concrete_with_no_such_method.dart.weak.transformed.expect
@@ -54,5 +54,5 @@
#C1 = #foo
#C2 = <core::Type*>[]
#C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C4 = <core::Symbol*, dynamic>{)
}
diff --git a/pkg/front_end/testcases/general/constants/const_collections.dart.weak.expect b/pkg/front_end/testcases/general/constants/const_collections.dart.weak.expect
index 13b1fa7..5e350b2 100644
--- a/pkg/front_end/testcases/general/constants/const_collections.dart.weak.expect
+++ b/pkg/front_end/testcases/general/constants/const_collections.dart.weak.expect
@@ -420,8 +420,8 @@
static const field core::List<core::String*>* barWithCustomIterableSpread3 = invalid-expression "Only lists and sets can be used in spreads in constant lists and sets.";
static const field core::List<core::String*>* listConcat = invalid-expression "The method '+' can't be invoked on '<String>[\"Hello\"]' in a constant expression.";
static const field core::Set<core::String*>* nullSet = #C3;
-static const field core::Set<core::String*>* baz = #C14;
-static const field core::Set<core::String*>* qux = #C17;
+static const field core::Set<core::String*>* baz = #C12;
+static const field core::Set<core::String*>* qux = #C13;
static const field core::Set<core::String*>* quxWithNullSpread = invalid-expression "Null value during constant evaluation.";
static const field core::Set<core::String*>* quxWithIntSpread = invalid-expression "pkg/front_end/testcases/general/constants/const_collections.dart:41:50: Error: Unexpected type 'int' of a map spread entry. Expected 'dynamic' or a Map.
const Set<String> quxWithIntSpread = {...baz, ...fortyTwo};
@@ -439,8 +439,8 @@
- 'WithEquals' is from 'pkg/front_end/testcases/general/constants/const_collections.dart'.";
static const field core::Set<dynamic>* setWithDuplicates = invalid-expression "The element '42' conflicts with another existing element in the set.";
static const field core::Map<core::String*, core::String*>* nullMap = #C3;
-static const field core::Map<core::String*, core::String*>* quux = #C19;
-static const field core::Map<core::String*, core::String*>* quuz = #C22;
+static const field core::Map<core::String*, core::String*>* quux = #C14;
+static const field core::Map<core::String*, core::String*>* quuz = #C16;
static const field core::Map<core::String*, core::String*>* quuzWithNullSpread = invalid-expression "Null value during constant evaluation.";
static const field core::Map<core::String*, core::String*>* quuzWithIntSpread = invalid-expression "pkg/front_end/testcases/general/constants/const_collections.dart:58:60: Error: Unexpected type 'int' of a map spread entry. Expected 'dynamic' or a Map.
const Map<String, String> quuzWithIntSpread = {...quux, ...fortyTwo};
@@ -453,7 +453,7 @@
^";
static const field core::Map<core::String*, core::String*>* mapWithCustomMap1 = invalid-expression "Only maps can be used in spreads in constant maps.";
static const field core::Map<core::String*, core::String*>* mapWithCustomMap2 = invalid-expression "Only maps can be used in spreads in constant maps.";
-static const field core::Map<core::String*, core::String*>* customMap = #C23;
+static const field core::Map<core::String*, core::String*>* customMap = #C17;
static const field core::Map<core::String*, core::String*>* mapWithCustomMap3 = invalid-expression "Only maps can be used in spreads in constant maps.";
static const field core::Map<dynamic, core::int*>* mapWithNonPrimitiveEqualsKey = invalid-expression "The key 'WithEquals {i: 42}' does not have a primitive operator '=='.
- 'WithEquals' is from 'pkg/front_end/testcases/general/constants/const_collections.dart'.";
@@ -463,22 +463,22 @@
static get barAsGetter() → core::List<core::String*>*
return #C10;
static get bazAsGetter() → core::Set<core::String*>*
- return #C14;
+ return #C12;
static get quxAsGetter() → core::Set<core::String*>*
- return #C17;
+ return #C13;
static get quuxAsGetter() → core::Map<core::String*, core::String*>*
- return #C19;
+ return #C14;
static get quuzAsGetter() → core::Map<core::String*, core::String*>*
- return #C22;
+ return #C16;
static method main() → dynamic {
core::print(#C10);
- core::print(#C17);
- core::print(#C22);
+ core::print(#C13);
+ core::print(#C16);
core::print( block {
final core::Set<core::String*>* #t2 = col::LinkedHashSet::•<core::String*>();
#t2.{core::Set::add}{Invariant}("hello"){(core::String*) →* core::bool*};
} =>#t2);
- core::print(#C26);
+ core::print(#C18);
}
constants {
@@ -493,21 +493,13 @@
#C9 = "!"
#C10 = <core::String*>[#C6, #C7, #C9]
#C11 = self::CustomIterable {}
- #C12 = <dynamic>[#C6, #C3, #C7, #C3]
- #C13 = core::_ImmutableMap<core::String*, Null> {_kvPairs:#C12}
- #C14 = col::_UnmodifiableSet<core::String*> {_map:#C13}
- #C15 = <dynamic>[#C6, #C3, #C7, #C3, #C9, #C3]
- #C16 = core::_ImmutableMap<core::String*, Null> {_kvPairs:#C15}
- #C17 = col::_UnmodifiableSet<core::String*> {_map:#C16}
- #C18 = <dynamic>[#C6, #C7]
- #C19 = core::_ImmutableMap<core::String*, core::String*> {_kvPairs:#C18}
- #C20 = "bye!"
- #C21 = <dynamic>[#C6, #C7, #C9, #C20]
- #C22 = core::_ImmutableMap<core::String*, core::String*> {_kvPairs:#C21}
- #C23 = self::CustomMap {}
- #C24 = <dynamic>[#C6, #C3]
- #C25 = core::_ImmutableMap<core::String*, Null> {_kvPairs:#C24}
- #C26 = col::_UnmodifiableSet<core::String*> {_map:#C25}
+ #C12 = <core::String*>{#C6, #C7}
+ #C13 = <core::String*>{#C6, #C7, #C9}
+ #C14 = <core::String*, core::String*>{#C6:#C7)
+ #C15 = "bye!"
+ #C16 = <core::String*, core::String*>{#C6:#C7, #C9:#C15)
+ #C17 = self::CustomMap {}
+ #C18 = <core::String*>{#C6}
}
diff --git a/pkg/front_end/testcases/general/constants/const_collections.dart.weak.outline.expect b/pkg/front_end/testcases/general/constants/const_collections.dart.weak.outline.expect
index 3ab56c9..8b671e9 100644
--- a/pkg/front_end/testcases/general/constants/const_collections.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/constants/const_collections.dart.weak.outline.expect
@@ -332,22 +332,22 @@
Evaluated: StaticGet @ org-dartlang-testcase:///const_collections.dart:32:63 -> InstanceConstant(const CustomIterable{})
Evaluated: ListLiteral @ org-dartlang-testcase:///const_collections.dart:33:33 -> ListConstant(const <String*>["Hello"])
Evaluated: ListLiteral @ org-dartlang-testcase:///const_collections.dart:33:45 -> ListConstant(const <String*>["World"])
-Evaluated: SetLiteral @ org-dartlang-testcase:///const_collections.dart:36:25 -> InstanceConstant(const _UnmodifiableSet<String*>{_UnmodifiableSet._map: const _ImmutableMap<String*, Null>{_ImmutableMap._kvPairs: const <dynamic>["hello", null, "world", null]}})
-Evaluated: SetConcatenation @ org-dartlang-testcase:///const_collections.dart:38:25 -> InstanceConstant(const _UnmodifiableSet<String*>{_UnmodifiableSet._map: const _ImmutableMap<String*, Null>{_ImmutableMap._kvPairs: const <dynamic>["hello", null, "world", null, "!", null]}})
-Evaluated: StaticGet @ org-dartlang-testcase:///const_collections.dart:40:43 -> InstanceConstant(const _UnmodifiableSet<String*>{_UnmodifiableSet._map: const _ImmutableMap<String*, Null>{_ImmutableMap._kvPairs: const <dynamic>["hello", null, "world", null]}})
+Evaluated: SetLiteral @ org-dartlang-testcase:///const_collections.dart:36:25 -> SetConstant(const <String*>{"hello", "world"})
+Evaluated: SetConcatenation @ org-dartlang-testcase:///const_collections.dart:38:25 -> SetConstant(const <String*>{"hello", "world", "!"})
+Evaluated: StaticGet @ org-dartlang-testcase:///const_collections.dart:40:43 -> SetConstant(const <String*>{"hello", "world"})
Evaluated: StaticGet @ org-dartlang-testcase:///const_collections.dart:40:51 -> NullConstant(null)
-Evaluated: StaticGet @ org-dartlang-testcase:///const_collections.dart:41:42 -> InstanceConstant(const _UnmodifiableSet<String*>{_UnmodifiableSet._map: const _ImmutableMap<String*, Null>{_ImmutableMap._kvPairs: const <dynamic>["hello", null, "world", null]}})
-Evaluated: StaticGet @ org-dartlang-testcase:///const_collections.dart:44:6 -> InstanceConstant(const _UnmodifiableSet<String*>{_UnmodifiableSet._map: const _ImmutableMap<String*, Null>{_ImmutableMap._kvPairs: const <dynamic>["hello", null, "world", null]}})
+Evaluated: StaticGet @ org-dartlang-testcase:///const_collections.dart:41:42 -> SetConstant(const <String*>{"hello", "world"})
+Evaluated: StaticGet @ org-dartlang-testcase:///const_collections.dart:44:6 -> SetConstant(const <String*>{"hello", "world"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///const_collections.dart:45:12 -> InstanceConstant(const CustomIterable{})
-Evaluated: StaticGet @ org-dartlang-testcase:///const_collections.dart:47:54 -> InstanceConstant(const _UnmodifiableSet<String*>{_UnmodifiableSet._map: const _ImmutableMap<String*, Null>{_ImmutableMap._kvPairs: const <dynamic>["hello", null, "world", null]}})
+Evaluated: StaticGet @ org-dartlang-testcase:///const_collections.dart:47:54 -> SetConstant(const <String*>{"hello", "world"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///const_collections.dart:47:62 -> InstanceConstant(const CustomIterable{})
-Evaluated: StaticGet @ org-dartlang-testcase:///const_collections.dart:48:54 -> InstanceConstant(const _UnmodifiableSet<String*>{_UnmodifiableSet._map: const _ImmutableMap<String*, Null>{_ImmutableMap._kvPairs: const <dynamic>["hello", null, "world", null]}})
+Evaluated: StaticGet @ org-dartlang-testcase:///const_collections.dart:48:54 -> SetConstant(const <String*>{"hello", "world"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///const_collections.dart:49:55 -> InstanceConstant(const WithEquals{WithEquals.i: 42})
-Evaluated: MapLiteral @ org-dartlang-testcase:///const_collections.dart:53:34 -> InstanceConstant(const _ImmutableMap<String*, String*>{_ImmutableMap._kvPairs: const <dynamic>["hello", "world"]})
-Evaluated: MapConcatenation @ org-dartlang-testcase:///const_collections.dart:55:27 -> InstanceConstant(const _ImmutableMap<String*, String*>{_ImmutableMap._kvPairs: const <dynamic>["hello", "world", "!", "bye!"]})
-Evaluated: StaticGet @ org-dartlang-testcase:///const_collections.dart:57:52 -> InstanceConstant(const _ImmutableMap<String*, String*>{_ImmutableMap._kvPairs: const <dynamic>["hello", "world"]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///const_collections.dart:53:34 -> MapConstant(const <String*, String*>{"hello": "world"})
+Evaluated: MapConcatenation @ org-dartlang-testcase:///const_collections.dart:55:27 -> MapConstant(const <String*, String*>{"hello": "world", "!": "bye!"})
+Evaluated: StaticGet @ org-dartlang-testcase:///const_collections.dart:57:52 -> MapConstant(const <String*, String*>{"hello": "world"})
Evaluated: StaticGet @ org-dartlang-testcase:///const_collections.dart:57:61 -> NullConstant(null)
-Evaluated: StaticGet @ org-dartlang-testcase:///const_collections.dart:58:51 -> InstanceConstant(const _ImmutableMap<String*, String*>{_ImmutableMap._kvPairs: const <dynamic>["hello", "world"]})
+Evaluated: StaticGet @ org-dartlang-testcase:///const_collections.dart:58:51 -> MapConstant(const <String*, String*>{"hello": "world"})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///const_collections.dart:61:57 -> InstanceConstant(const CustomMap{})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///const_collections.dart:62:51 -> InstanceConstant(const CustomMap{})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///const_collections.dart:63:45 -> InstanceConstant(const CustomMap{})
diff --git a/pkg/front_end/testcases/general/constants/const_collections.dart.weak.transformed.expect b/pkg/front_end/testcases/general/constants/const_collections.dart.weak.transformed.expect
index f8c5584..13439a67 100644
--- a/pkg/front_end/testcases/general/constants/const_collections.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/constants/const_collections.dart.weak.transformed.expect
@@ -420,8 +420,8 @@
static const field core::List<core::String*>* barWithCustomIterableSpread3 = invalid-expression "Only lists and sets can be used in spreads in constant lists and sets.";
static const field core::List<core::String*>* listConcat = invalid-expression "The method '+' can't be invoked on '<String>[\"Hello\"]' in a constant expression.";
static const field core::Set<core::String*>* nullSet = #C3;
-static const field core::Set<core::String*>* baz = #C14;
-static const field core::Set<core::String*>* qux = #C17;
+static const field core::Set<core::String*>* baz = #C12;
+static const field core::Set<core::String*>* qux = #C13;
static const field core::Set<core::String*>* quxWithNullSpread = invalid-expression "Null value during constant evaluation.";
static const field core::Set<core::String*>* quxWithIntSpread = invalid-expression "pkg/front_end/testcases/general/constants/const_collections.dart:41:50: Error: Unexpected type 'int' of a map spread entry. Expected 'dynamic' or a Map.
const Set<String> quxWithIntSpread = {...baz, ...fortyTwo};
@@ -439,8 +439,8 @@
- 'WithEquals' is from 'pkg/front_end/testcases/general/constants/const_collections.dart'.";
static const field core::Set<dynamic>* setWithDuplicates = invalid-expression "The element '42' conflicts with another existing element in the set.";
static const field core::Map<core::String*, core::String*>* nullMap = #C3;
-static const field core::Map<core::String*, core::String*>* quux = #C19;
-static const field core::Map<core::String*, core::String*>* quuz = #C22;
+static const field core::Map<core::String*, core::String*>* quux = #C14;
+static const field core::Map<core::String*, core::String*>* quuz = #C16;
static const field core::Map<core::String*, core::String*>* quuzWithNullSpread = invalid-expression "Null value during constant evaluation.";
static const field core::Map<core::String*, core::String*>* quuzWithIntSpread = invalid-expression "pkg/front_end/testcases/general/constants/const_collections.dart:58:60: Error: Unexpected type 'int' of a map spread entry. Expected 'dynamic' or a Map.
const Map<String, String> quuzWithIntSpread = {...quux, ...fortyTwo};
@@ -453,7 +453,7 @@
^";
static const field core::Map<core::String*, core::String*>* mapWithCustomMap1 = invalid-expression "Only maps can be used in spreads in constant maps.";
static const field core::Map<core::String*, core::String*>* mapWithCustomMap2 = invalid-expression "Only maps can be used in spreads in constant maps.";
-static const field core::Map<core::String*, core::String*>* customMap = #C23;
+static const field core::Map<core::String*, core::String*>* customMap = #C17;
static const field core::Map<core::String*, core::String*>* mapWithCustomMap3 = invalid-expression "Only maps can be used in spreads in constant maps.";
static const field core::Map<dynamic, core::int*>* mapWithNonPrimitiveEqualsKey = invalid-expression "The key 'WithEquals {i: 42}' does not have a primitive operator '=='.
- 'WithEquals' is from 'pkg/front_end/testcases/general/constants/const_collections.dart'.";
@@ -463,22 +463,22 @@
static get barAsGetter() → core::List<core::String*>*
return #C10;
static get bazAsGetter() → core::Set<core::String*>*
- return #C14;
+ return #C12;
static get quxAsGetter() → core::Set<core::String*>*
- return #C17;
+ return #C13;
static get quuxAsGetter() → core::Map<core::String*, core::String*>*
- return #C19;
+ return #C14;
static get quuzAsGetter() → core::Map<core::String*, core::String*>*
- return #C22;
+ return #C16;
static method main() → dynamic {
core::print(#C10);
- core::print(#C17);
- core::print(#C22);
+ core::print(#C13);
+ core::print(#C16);
core::print( block {
final core::Set<core::String*>* #t2 = new col::_CompactLinkedHashSet::•<core::String*>();
#t2.{core::Set::add}{Invariant}("hello"){(core::String*) →* core::bool*};
} =>#t2);
- core::print(#C26);
+ core::print(#C18);
}
constants {
@@ -493,21 +493,13 @@
#C9 = "!"
#C10 = <core::String*>[#C6, #C7, #C9]
#C11 = self::CustomIterable {}
- #C12 = <dynamic>[#C6, #C3, #C7, #C3]
- #C13 = core::_ImmutableMap<core::String*, Null> {_kvPairs:#C12}
- #C14 = col::_UnmodifiableSet<core::String*> {_map:#C13}
- #C15 = <dynamic>[#C6, #C3, #C7, #C3, #C9, #C3]
- #C16 = core::_ImmutableMap<core::String*, Null> {_kvPairs:#C15}
- #C17 = col::_UnmodifiableSet<core::String*> {_map:#C16}
- #C18 = <dynamic>[#C6, #C7]
- #C19 = core::_ImmutableMap<core::String*, core::String*> {_kvPairs:#C18}
- #C20 = "bye!"
- #C21 = <dynamic>[#C6, #C7, #C9, #C20]
- #C22 = core::_ImmutableMap<core::String*, core::String*> {_kvPairs:#C21}
- #C23 = self::CustomMap {}
- #C24 = <dynamic>[#C6, #C3]
- #C25 = core::_ImmutableMap<core::String*, Null> {_kvPairs:#C24}
- #C26 = col::_UnmodifiableSet<core::String*> {_map:#C25}
+ #C12 = <core::String*>{#C6, #C7}
+ #C13 = <core::String*>{#C6, #C7, #C9}
+ #C14 = <core::String*, core::String*>{#C6:#C7)
+ #C15 = "bye!"
+ #C16 = <core::String*, core::String*>{#C6:#C7, #C9:#C15)
+ #C17 = self::CustomMap {}
+ #C18 = <core::String*>{#C6}
}
diff --git a/pkg/front_end/testcases/general/constants/from_lib/main.dart.weak.expect b/pkg/front_end/testcases/general/constants/from_lib/main.dart.weak.expect
index c76837e..6d5d48a 100644
--- a/pkg/front_end/testcases/general/constants/from_lib/main.dart.weak.expect
+++ b/pkg/front_end/testcases/general/constants/from_lib/main.dart.weak.expect
@@ -4,33 +4,27 @@
import "org-dartlang-testcase:///main_lib.dart" as a;
-static const field core::Map<core::int*, core::String*>* map = #C4;
-static const field core::Set<core::int*>* set = #C10;
-static const field core::List<core::int*>* list = #C11;
+static const field core::Map<core::int*, core::String*>* map = #C3;
+static const field core::Set<core::int*>* set = #C6;
+static const field core::List<core::int*>* list = #C7;
static method main() → dynamic {}
library;
import self as self2;
import "dart:core" as core;
-static const field core::Map<core::int*, core::String*>* map = #C4;
-static const field core::Set<core::int*>* set = #C14;
-static const field core::List<core::int*>* list = #C15;
+static const field core::Map<core::int*, core::String*>* map = #C3;
+static const field core::Set<core::int*>* set = #C8;
+static const field core::List<core::int*>* list = #C9;
constants {
#C1 = 1
#C2 = "a"
- #C3 = <dynamic>[#C1, #C2]
- #C4 = core::_ImmutableMap<core::int*, core::String*> {_kvPairs:#C3}
- #C5 = 2
- #C6 = null
- #C7 = 3
- #C8 = <dynamic>[#C5, #C6, #C7, #C6]
- #C9 = core::_ImmutableMap<core::int*, Null> {_kvPairs:#C8}
- #C10 = col::_UnmodifiableSet<core::int*> {_map:#C9}
- #C11 = <core::int*>[#C7, #C5]
- #C12 = <dynamic>[#C5, #C6]
- #C13 = core::_ImmutableMap<core::int*, Null> {_kvPairs:#C12}
- #C14 = col::_UnmodifiableSet<core::int*> {_map:#C13}
- #C15 = <core::int*>[#C7]
+ #C3 = <core::int*, core::String*>{#C1:#C2)
+ #C4 = 2
+ #C5 = 3
+ #C6 = <core::int*>{#C4, #C5}
+ #C7 = <core::int*>[#C5, #C4]
+ #C8 = <core::int*>{#C4}
+ #C9 = <core::int*>[#C5]
}
diff --git a/pkg/front_end/testcases/general/constants/from_lib/main.dart.weak.outline.expect b/pkg/front_end/testcases/general/constants/from_lib/main.dart.weak.outline.expect
index 280c0fe..f0edaba 100644
--- a/pkg/front_end/testcases/general/constants/from_lib/main.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/constants/from_lib/main.dart.weak.outline.expect
@@ -15,26 +15,22 @@
import self as mai;
import "dart:core" as core;
-static const field core::Map<core::int*, core::String*>* map = #C4;
-static const field core::Set<core::int*>* set = #C9;
-static const field core::List<core::int*>* list = #C11;
+static const field core::Map<core::int*, core::String*>* map = #C3;
+static const field core::Set<core::int*>* set = #C5;
+static const field core::List<core::int*>* list = #C7;
constants {
#C1 = 1
#C2 = "a"
- #C3 = <dynamic>[#C1, #C2]
- #C4 = core::_ImmutableMap<core::int*, core::String*> {_kvPairs:#C3}
- #C5 = 2
- #C6 = null
- #C7 = <dynamic>[#C5, #C6]
- #C8 = core::_ImmutableMap<core::int*, Null> {_kvPairs:#C7}
- #C9 = col::_UnmodifiableSet<core::int*> {_map:#C8}
- #C10 = 3
- #C11 = <core::int*>[#C10]
+ #C3 = <core::int*, core::String*>{#C1:#C2)
+ #C4 = 2
+ #C5 = <core::int*>{#C4}
+ #C6 = 3
+ #C7 = <core::int*>[#C6]
}
Extra constant evaluation status:
-Evaluated: MapConcatenation @ org-dartlang-testcase:///main.dart:7:7 -> InstanceConstant(const _ImmutableMap<int*, String*>{_ImmutableMap._kvPairs: const <dynamic>[1, "a"]})
-Evaluated: SetConcatenation @ org-dartlang-testcase:///main.dart:11:18 -> InstanceConstant(const _UnmodifiableSet<int*>{_UnmodifiableSet._map: const _ImmutableMap<int*, Null>{_ImmutableMap._kvPairs: const <dynamic>[2, null, 3, null]}})
+Evaluated: MapConcatenation @ org-dartlang-testcase:///main.dart:7:7 -> MapConstant(const <int*, String*>{1: "a"})
+Evaluated: SetConcatenation @ org-dartlang-testcase:///main.dart:11:18 -> SetConstant(const <int*>{2, 3})
Evaluated: ListConcatenation @ org-dartlang-testcase:///main.dart:16:19 -> ListConstant(const <int*>[3, 2])
Extra constant evaluation: evaluated: 3, effectively constant: 3
diff --git a/pkg/front_end/testcases/general/constants/from_lib/main.dart.weak.transformed.expect b/pkg/front_end/testcases/general/constants/from_lib/main.dart.weak.transformed.expect
index c76837e..6d5d48a 100644
--- a/pkg/front_end/testcases/general/constants/from_lib/main.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/constants/from_lib/main.dart.weak.transformed.expect
@@ -4,33 +4,27 @@
import "org-dartlang-testcase:///main_lib.dart" as a;
-static const field core::Map<core::int*, core::String*>* map = #C4;
-static const field core::Set<core::int*>* set = #C10;
-static const field core::List<core::int*>* list = #C11;
+static const field core::Map<core::int*, core::String*>* map = #C3;
+static const field core::Set<core::int*>* set = #C6;
+static const field core::List<core::int*>* list = #C7;
static method main() → dynamic {}
library;
import self as self2;
import "dart:core" as core;
-static const field core::Map<core::int*, core::String*>* map = #C4;
-static const field core::Set<core::int*>* set = #C14;
-static const field core::List<core::int*>* list = #C15;
+static const field core::Map<core::int*, core::String*>* map = #C3;
+static const field core::Set<core::int*>* set = #C8;
+static const field core::List<core::int*>* list = #C9;
constants {
#C1 = 1
#C2 = "a"
- #C3 = <dynamic>[#C1, #C2]
- #C4 = core::_ImmutableMap<core::int*, core::String*> {_kvPairs:#C3}
- #C5 = 2
- #C6 = null
- #C7 = 3
- #C8 = <dynamic>[#C5, #C6, #C7, #C6]
- #C9 = core::_ImmutableMap<core::int*, Null> {_kvPairs:#C8}
- #C10 = col::_UnmodifiableSet<core::int*> {_map:#C9}
- #C11 = <core::int*>[#C7, #C5]
- #C12 = <dynamic>[#C5, #C6]
- #C13 = core::_ImmutableMap<core::int*, Null> {_kvPairs:#C12}
- #C14 = col::_UnmodifiableSet<core::int*> {_map:#C13}
- #C15 = <core::int*>[#C7]
+ #C3 = <core::int*, core::String*>{#C1:#C2)
+ #C4 = 2
+ #C5 = 3
+ #C6 = <core::int*>{#C4, #C5}
+ #C7 = <core::int*>[#C5, #C4]
+ #C8 = <core::int*>{#C4}
+ #C9 = <core::int*>[#C5]
}
diff --git a/pkg/front_end/testcases/general/issue40744.dart.weak.expect b/pkg/front_end/testcases/general/issue40744.dart.weak.expect
index b193d72..265bcc9 100644
--- a/pkg/front_end/testcases/general/issue40744.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue40744.dart.weak.expect
@@ -2,18 +2,17 @@
import self as self;
import "dart:core" as core;
-static const field core::Map<core::String*, dynamic>* generatorConfigDefaultJson = #C4;
+static const field core::Map<core::String*, dynamic>* generatorConfigDefaultJson = #C3;
static method helper(core::Map<core::String*, dynamic>* input) → void {
core::print(input);
}
static method main() → void {
- final core::Map<core::String*, Null>* nullValueMap = core::Map::fromEntries<core::String*, Null>((#C4).{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, dynamic>*>*}.{core::Iterable::map}<core::MapEntry<core::String*, Null>*>((core::MapEntry<core::String*, dynamic>* e) → core::MapEntry<core::String*, Null>* => new core::MapEntry::_<core::String*, Null>(e.{core::MapEntry::key}{core::String*}, null)){((core::MapEntry<core::String*, dynamic>*) →* core::MapEntry<core::String*, Null>*) →* core::Iterable<core::MapEntry<core::String*, Null>*>*});
+ final core::Map<core::String*, Null>* nullValueMap = core::Map::fromEntries<core::String*, Null>((#C3).{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, dynamic>*>*}.{core::Iterable::map}<core::MapEntry<core::String*, Null>*>((core::MapEntry<core::String*, dynamic>* e) → core::MapEntry<core::String*, Null>* => new core::MapEntry::_<core::String*, Null>(e.{core::MapEntry::key}{core::String*}, null)){((core::MapEntry<core::String*, dynamic>*) →* core::MapEntry<core::String*, Null>*) →* core::Iterable<core::MapEntry<core::String*, Null>*>*});
self::helper(nullValueMap);
}
constants {
#C1 = "a"
#C2 = 1
- #C3 = <dynamic>[#C1, #C2]
- #C4 = core::_ImmutableMap<core::String*, dynamic> {_kvPairs:#C3}
+ #C3 = <core::String*, dynamic>{#C1:#C2)
}
diff --git a/pkg/front_end/testcases/general/issue40744.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue40744.dart.weak.outline.expect
index 3b367f6..5acf79e 100644
--- a/pkg/front_end/testcases/general/issue40744.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/issue40744.dart.weak.outline.expect
@@ -10,5 +10,5 @@
Extra constant evaluation status:
-Evaluated: MapLiteral @ org-dartlang-testcase:///issue40744.dart:5:53 -> InstanceConstant(const _ImmutableMap<String*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>["a", 1]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///issue40744.dart:5:53 -> MapConstant(const <String*, dynamic>{"a": 1})
Extra constant evaluation: evaluated: 1, effectively constant: 1
diff --git a/pkg/front_end/testcases/general/issue40744.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue40744.dart.weak.transformed.expect
index b193d72..265bcc9 100644
--- a/pkg/front_end/testcases/general/issue40744.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue40744.dart.weak.transformed.expect
@@ -2,18 +2,17 @@
import self as self;
import "dart:core" as core;
-static const field core::Map<core::String*, dynamic>* generatorConfigDefaultJson = #C4;
+static const field core::Map<core::String*, dynamic>* generatorConfigDefaultJson = #C3;
static method helper(core::Map<core::String*, dynamic>* input) → void {
core::print(input);
}
static method main() → void {
- final core::Map<core::String*, Null>* nullValueMap = core::Map::fromEntries<core::String*, Null>((#C4).{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, dynamic>*>*}.{core::Iterable::map}<core::MapEntry<core::String*, Null>*>((core::MapEntry<core::String*, dynamic>* e) → core::MapEntry<core::String*, Null>* => new core::MapEntry::_<core::String*, Null>(e.{core::MapEntry::key}{core::String*}, null)){((core::MapEntry<core::String*, dynamic>*) →* core::MapEntry<core::String*, Null>*) →* core::Iterable<core::MapEntry<core::String*, Null>*>*});
+ final core::Map<core::String*, Null>* nullValueMap = core::Map::fromEntries<core::String*, Null>((#C3).{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, dynamic>*>*}.{core::Iterable::map}<core::MapEntry<core::String*, Null>*>((core::MapEntry<core::String*, dynamic>* e) → core::MapEntry<core::String*, Null>* => new core::MapEntry::_<core::String*, Null>(e.{core::MapEntry::key}{core::String*}, null)){((core::MapEntry<core::String*, dynamic>*) →* core::MapEntry<core::String*, Null>*) →* core::Iterable<core::MapEntry<core::String*, Null>*>*});
self::helper(nullValueMap);
}
constants {
#C1 = "a"
#C2 = 1
- #C3 = <dynamic>[#C1, #C2]
- #C4 = core::_ImmutableMap<core::String*, dynamic> {_kvPairs:#C3}
+ #C3 = <core::String*, dynamic>{#C1:#C2)
}
diff --git a/pkg/front_end/testcases/general/issue45003/main.dart.weak.expect b/pkg/front_end/testcases/general/issue45003/main.dart.weak.expect
index 56f882f..d009d81 100644
--- a/pkg/front_end/testcases/general/issue45003/main.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue45003/main.dart.weak.expect
@@ -5,7 +5,7 @@
import "org-dartlang-testcase:///foo_lib.dart";
-static const field core::Set<foo::Foo> foo = #C5;
+static const field core::Set<foo::Foo> foo = #C2;
static method main() → dynamic {}
library /*isNonNullableByDefault*/;
@@ -41,10 +41,7 @@
constants {
#C1 = bar::Bar<dynamic> {}
- #C2 = null
- #C3 = <dynamic>[#C1, #C2]
- #C4 = core::_ImmutableMap<foo::Foo*, Null> {_kvPairs:#C3}
- #C5 = col::_UnmodifiableSet<foo::Foo*> {_map:#C4}
+ #C2 = <foo::Foo*>{#C1}
}
diff --git a/pkg/front_end/testcases/general/issue45003/main.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue45003/main.dart.weak.outline.expect
index db7011d..277bd57 100644
--- a/pkg/front_end/testcases/general/issue45003/main.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/issue45003/main.dart.weak.outline.expect
@@ -43,5 +43,5 @@
Extra constant evaluation status:
-Evaluated: SetLiteral @ org-dartlang-testcase:///main.dart:7:27 -> InstanceConstant(const _UnmodifiableSet<Foo*>{_UnmodifiableSet._map: const _ImmutableMap<Foo*, Null>{_ImmutableMap._kvPairs: const <dynamic>[const Bar<dynamic>{}, null]}})
+Evaluated: SetLiteral @ org-dartlang-testcase:///main.dart:7:27 -> SetConstant(const <Foo*>{const Bar<dynamic>{}})
Extra constant evaluation: evaluated: 4, effectively constant: 1
diff --git a/pkg/front_end/testcases/general/issue45003/main.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue45003/main.dart.weak.transformed.expect
index 56f882f..d009d81 100644
--- a/pkg/front_end/testcases/general/issue45003/main.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue45003/main.dart.weak.transformed.expect
@@ -5,7 +5,7 @@
import "org-dartlang-testcase:///foo_lib.dart";
-static const field core::Set<foo::Foo> foo = #C5;
+static const field core::Set<foo::Foo> foo = #C2;
static method main() → dynamic {}
library /*isNonNullableByDefault*/;
@@ -41,10 +41,7 @@
constants {
#C1 = bar::Bar<dynamic> {}
- #C2 = null
- #C3 = <dynamic>[#C1, #C2]
- #C4 = core::_ImmutableMap<foo::Foo*, Null> {_kvPairs:#C3}
- #C5 = col::_UnmodifiableSet<foo::Foo*> {_map:#C4}
+ #C2 = <foo::Foo*>{#C1}
}
diff --git a/pkg/front_end/testcases/general/issue46719.dart.weak.expect b/pkg/front_end/testcases/general/issue46719.dart.weak.expect
index 17813ed..449b259 100644
--- a/pkg/front_end/testcases/general/issue46719.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue46719.dart.weak.expect
@@ -77,7 +77,7 @@
static method m<X extends core::Object? = dynamic>(self::m::X% x) → core::List<self::m::X%>
return <self::m::X%>[x];
static method FunctionApplier|applyAndPrint(lowered final core::Function #this, core::List<core::Object?> positionalArguments) → void
- return core::print(core::Function::apply(#this, positionalArguments, #C2));
+ return core::print(core::Function::apply(#this, positionalArguments, #C1));
static method FunctionApplier|get#applyAndPrint(lowered final core::Function #this) → (core::List<core::Object?>) → void
return (core::List<core::Object?> positionalArguments) → void => self::FunctionApplier|applyAndPrint(#this, positionalArguments);
static method test() → dynamic {
@@ -100,8 +100,8 @@
invalid-expression "pkg/front_end/testcases/general/issue46719.dart:32:18: Error: Couldn't find constructor 'm.applyAndPrint'.
self.m<String>.applyAndPrint(['three']);
^^^^^^^^^^^^^";
- self::FunctionApplier|applyAndPrint(#C3, <core::Object?>[2]);
- self::FunctionApplier|applyAndPrint(#C3, <core::Object?>["three"]);
+ self::FunctionApplier|applyAndPrint(#C2, <core::Object?>[2]);
+ self::FunctionApplier|applyAndPrint(#C2, <core::Object?>["three"]);
invalid-expression "pkg/front_end/testcases/general/issue46719.dart:35:5: Error: Member not found: 'named'.
A.named.toString();
^^^^^".{core::Object::toString}(){() → core::String};
@@ -115,7 +115,6 @@
static method main() → void {}
constants {
- #C1 = <dynamic>[]
- #C2 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C1}
- #C3 = static-tearoff self::A::n
+ #C1 = <core::Symbol*, dynamic>{)
+ #C2 = static-tearoff self::A::n
}
diff --git a/pkg/front_end/testcases/general/issue46719.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue46719.dart.weak.transformed.expect
index c09f829..68480b5 100644
--- a/pkg/front_end/testcases/general/issue46719.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue46719.dart.weak.transformed.expect
@@ -77,7 +77,7 @@
static method m<X extends core::Object? = dynamic>(self::m::X% x) → core::List<self::m::X%>
return core::_GrowableList::_literal1<self::m::X%>(x);
static method FunctionApplier|applyAndPrint(lowered final core::Function #this, core::List<core::Object?> positionalArguments) → void
- return core::print(core::Function::apply(#this, positionalArguments, #C2));
+ return core::print(core::Function::apply(#this, positionalArguments, #C1));
static method FunctionApplier|get#applyAndPrint(lowered final core::Function #this) → (core::List<core::Object?>) → void
return (core::List<core::Object?> positionalArguments) → void => self::FunctionApplier|applyAndPrint(#this, positionalArguments);
static method test() → dynamic {
@@ -100,8 +100,8 @@
invalid-expression "pkg/front_end/testcases/general/issue46719.dart:32:18: Error: Couldn't find constructor 'm.applyAndPrint'.
self.m<String>.applyAndPrint(['three']);
^^^^^^^^^^^^^";
- self::FunctionApplier|applyAndPrint(#C3, core::_GrowableList::_literal1<core::Object?>(2));
- self::FunctionApplier|applyAndPrint(#C3, core::_GrowableList::_literal1<core::Object?>("three"));
+ self::FunctionApplier|applyAndPrint(#C2, core::_GrowableList::_literal1<core::Object?>(2));
+ self::FunctionApplier|applyAndPrint(#C2, core::_GrowableList::_literal1<core::Object?>("three"));
invalid-expression "pkg/front_end/testcases/general/issue46719.dart:35:5: Error: Member not found: 'named'.
A.named.toString();
^^^^^".{core::Object::toString}(){() → core::String};
@@ -115,7 +115,6 @@
static method main() → void {}
constants {
- #C1 = <dynamic>[]
- #C2 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C1}
- #C3 = static-tearoff self::A::n
+ #C1 = <core::Symbol*, dynamic>{)
+ #C2 = static-tearoff self::A::n
}
diff --git a/pkg/front_end/testcases/general/no_such_method_forwarder.dart.weak.expect b/pkg/front_end/testcases/general/no_such_method_forwarder.dart.weak.expect
index e2b0f2d..2fd6b9d 100644
--- a/pkg/front_end/testcases/general/no_such_method_forwarder.dart.weak.expect
+++ b/pkg/front_end/testcases/general/no_such_method_forwarder.dart.weak.expect
@@ -53,6 +53,6 @@
#C1 = #org-dartlang-testcase:///no_such_method_forwarder.dart::_foo
#C2 = <core::Type*>[]
#C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C4 = <core::Symbol*, dynamic>{)
#C5 = #foo
}
diff --git a/pkg/front_end/testcases/general/no_such_method_forwarder.dart.weak.outline.expect b/pkg/front_end/testcases/general/no_such_method_forwarder.dart.weak.outline.expect
index 9be8c51..3f9946a 100644
--- a/pkg/front_end/testcases/general/no_such_method_forwarder.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/no_such_method_forwarder.dart.weak.outline.expect
@@ -47,9 +47,9 @@
Evaluated: SymbolLiteral @ org-dartlang-testcase:///no_such_method_forwarder.dart:6:8 -> SymbolConstant(#_foo)
Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method_forwarder.dart:6:8 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method_forwarder.dart:6:8 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method_forwarder.dart:6:8 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method_forwarder.dart:6:8 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///no_such_method_forwarder.dart:11:8 -> SymbolConstant(#foo)
Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method_forwarder.dart:11:8 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method_forwarder.dart:11:8 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method_forwarder.dart:11:8 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method_forwarder.dart:11:8 -> MapConstant(const <Symbol*, dynamic>{})
Extra constant evaluation: evaluated: 16, effectively constant: 8
diff --git a/pkg/front_end/testcases/general/no_such_method_forwarder.dart.weak.transformed.expect b/pkg/front_end/testcases/general/no_such_method_forwarder.dart.weak.transformed.expect
index 5ef478d..e545ab0 100644
--- a/pkg/front_end/testcases/general/no_such_method_forwarder.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/no_such_method_forwarder.dart.weak.transformed.expect
@@ -80,6 +80,6 @@
#C1 = #org-dartlang-testcase:///no_such_method_forwarder.dart::_foo
#C2 = <core::Type*>[]
#C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C4 = <core::Symbol*, dynamic>{)
#C5 = #foo
}
diff --git a/pkg/front_end/testcases/general/no_such_method_private_setter.dart.weak.expect b/pkg/front_end/testcases/general/no_such_method_private_setter.dart.weak.expect
index 6728bd2..180ea5a 100644
--- a/pkg/front_end/testcases/general/no_such_method_private_setter.dart.weak.expect
+++ b/pkg/front_end/testcases/general/no_such_method_private_setter.dart.weak.expect
@@ -56,6 +56,6 @@
#C1 = #org-dartlang-testcase:///no_such_method_private_setter.dart::_x
#C2 = <core::Type*>[]
#C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C4 = <core::Symbol*, dynamic>{)
#C5 = #org-dartlang-testcase:///no_such_method_private_setter.dart::_x=
}
diff --git a/pkg/front_end/testcases/general/no_such_method_private_setter.dart.weak.outline.expect b/pkg/front_end/testcases/general/no_such_method_private_setter.dart.weak.outline.expect
index d5c3d92..882f03b 100644
--- a/pkg/front_end/testcases/general/no_such_method_private_setter.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/no_such_method_private_setter.dart.weak.outline.expect
@@ -53,8 +53,8 @@
Evaluated: SymbolLiteral @ org-dartlang-testcase:///no_such_method_private_setter_lib.dart:8:7 -> SymbolConstant(#_x)
Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method_private_setter_lib.dart:8:7 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method_private_setter_lib.dart:8:7 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method_private_setter_lib.dart:8:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method_private_setter_lib.dart:8:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///no_such_method_private_setter_lib.dart:8:7 -> SymbolConstant(#_x=)
Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method_private_setter_lib.dart:8:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method_private_setter_lib.dart:8:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method_private_setter_lib.dart:8:7 -> MapConstant(const <Symbol*, dynamic>{})
Extra constant evaluation: evaluated: 19, effectively constant: 7
diff --git a/pkg/front_end/testcases/general/no_such_method_private_setter.dart.weak.transformed.expect b/pkg/front_end/testcases/general/no_such_method_private_setter.dart.weak.transformed.expect
index 79287b9..bc8c75f 100644
--- a/pkg/front_end/testcases/general/no_such_method_private_setter.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/no_such_method_private_setter.dart.weak.transformed.expect
@@ -56,6 +56,6 @@
#C1 = #org-dartlang-testcase:///no_such_method_private_setter.dart::_x
#C2 = <core::Type*>[]
#C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C4 = <core::Symbol*, dynamic>{)
#C5 = #org-dartlang-testcase:///no_such_method_private_setter.dart::_x=
}
diff --git a/pkg/front_end/testcases/general/nsm_covariance.dart.weak.expect b/pkg/front_end/testcases/general/nsm_covariance.dart.weak.expect
index 7f2d6c50..643964f 100644
--- a/pkg/front_end/testcases/general/nsm_covariance.dart.weak.expect
+++ b/pkg/front_end/testcases/general/nsm_covariance.dart.weak.expect
@@ -60,13 +60,13 @@
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
no-such-method-forwarder method _method1(core::int* a, covariant core::int* b, generic-covariant-impl core::int* c, covariant generic-covariant-impl core::int* d) → void
- return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#C3, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[a, b, c, d]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic};
+ return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#C3, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[a, b, c, d]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation*) →* dynamic};
no-such-method-forwarder method _method2({core::int* a = #C1, covariant core::int* b = #C1, generic-covariant-impl core::int* c = #C1, covariant generic-covariant-impl core::int* d = #C1}) → void
- return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C4, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation*) →* dynamic};
+ return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation*) →* dynamic};
no-such-method-forwarder method _method3(covariant core::int* a, generic-covariant-impl core::int* b) → void
- return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#C12, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[a, b]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic};
+ return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#C12, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[a, b]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation*) →* dynamic};
no-such-method-forwarder method _method4({covariant core::int* a = #C1, generic-covariant-impl core::int* b = #C1}) → void
- return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#C13, 0, #C4, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b}))){(core::Invocation*) →* dynamic};
+ return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#C13, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b}))){(core::Invocation*) →* dynamic};
}
class D4 extends core::Object implements nsm::B, nsm::A<core::int*> {
synthetic constructor •() → self::D4*
@@ -85,13 +85,13 @@
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
no-such-method-forwarder method _method1(core::int* x, covariant core::int* y, generic-covariant-impl core::int* z, covariant generic-covariant-impl core::int* w) → void
- return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#C3, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[x, y, z, w]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic};
+ return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#C3, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[x, y, z, w]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation*) →* dynamic};
no-such-method-forwarder method _method2({core::int* a = #C1, covariant core::int* b = #C1, generic-covariant-impl core::int* c = #C1, covariant generic-covariant-impl core::int* d = #C1}) → void
- return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C4, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation*) →* dynamic};
+ return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation*) →* dynamic};
no-such-method-forwarder method _method3(covariant core::int* x, generic-covariant-impl core::int* y) → void
- return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#C12, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[x, y]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic};
+ return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#C12, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[x, y]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation*) →* dynamic};
no-such-method-forwarder method _method4({covariant core::int* a = #C1, generic-covariant-impl core::int* b = #C1}) → void
- return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#C13, 0, #C4, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b}))){(core::Invocation*) →* dynamic};
+ return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#C13, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b}))){(core::Invocation*) →* dynamic};
}
static method main() → dynamic {}
@@ -192,13 +192,13 @@
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
no-such-method-forwarder method _method1(core::int* a, covariant core::int* b, generic-covariant-impl core::int* c, covariant generic-covariant-impl core::int* d) → void
- return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C14, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[a, b, c, d]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic};
+ return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C14, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[a, b, c, d]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation*) →* dynamic};
no-such-method-forwarder method _method2({core::int* a = #C1, covariant core::int* b = #C1, generic-covariant-impl core::int* c = #C1, covariant generic-covariant-impl core::int* d = #C1}) → void
- return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C15, 0, #C4, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation*) →* dynamic};
+ return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C15, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation*) →* dynamic};
no-such-method-forwarder method _method3(covariant core::int* a, generic-covariant-impl core::int* b) → void
- return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C16, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[a, b]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic};
+ return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C16, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[a, b]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation*) →* dynamic};
no-such-method-forwarder method _method4({covariant core::int* a = #C1, generic-covariant-impl core::int* b = #C1}) → void
- return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C17, 0, #C4, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b}))){(core::Invocation*) →* dynamic};
+ return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C17, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b}))){(core::Invocation*) →* dynamic};
}
class C4 extends core::Object implements nsm::B, nsm::A<core::int*> {
synthetic constructor •() → nsm::C4*
@@ -217,13 +217,13 @@
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
no-such-method-forwarder method _method1(core::int* x, covariant core::int* y, generic-covariant-impl core::int* z, covariant generic-covariant-impl core::int* w) → void
- return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C14, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[x, y, z, w]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic};
+ return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C14, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[x, y, z, w]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation*) →* dynamic};
no-such-method-forwarder method _method2({core::int* a = #C1, covariant core::int* b = #C1, generic-covariant-impl core::int* c = #C1, covariant generic-covariant-impl core::int* d = #C1}) → void
- return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C15, 0, #C4, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation*) →* dynamic};
+ return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C15, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation*) →* dynamic};
no-such-method-forwarder method _method3(covariant core::int* x, generic-covariant-impl core::int* y) → void
- return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C16, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[x, y]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic};
+ return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C16, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[x, y]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation*) →* dynamic};
no-such-method-forwarder method _method4({covariant core::int* a = #C1, generic-covariant-impl core::int* b = #C1}) → void
- return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C17, 0, #C4, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b}))){(core::Invocation*) →* dynamic};
+ return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C17, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b}))){(core::Invocation*) →* dynamic};
}
constants {
@@ -231,9 +231,9 @@
#C2 = core::_Override {}
#C3 = #org-dartlang-testcase:///nsm_covariance.dart::_method1
#C4 = <core::Type*>[]
- #C5 = <dynamic>[]
- #C6 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C5}
- #C7 = #org-dartlang-testcase:///nsm_covariance.dart::_method2
+ #C5 = <core::Symbol*, dynamic>{)
+ #C6 = #org-dartlang-testcase:///nsm_covariance.dart::_method2
+ #C7 = <dynamic>[]
#C8 = #a
#C9 = #b
#C10 = #c
diff --git a/pkg/front_end/testcases/general/nsm_covariance.dart.weak.outline.expect b/pkg/front_end/testcases/general/nsm_covariance.dart.weak.outline.expect
index e07accc..1534134 100644
--- a/pkg/front_end/testcases/general/nsm_covariance.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/nsm_covariance.dart.weak.outline.expect
@@ -222,7 +222,7 @@
Evaluated: StaticGet @ org-dartlang-testcase:///nsm_covariance.dart:14:4 -> InstanceConstant(const _Override{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance.dart:13:7 -> SymbolConstant(#_method1)
Evaluated: ListLiteral @ org-dartlang-testcase:///nsm_covariance.dart:13:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///nsm_covariance.dart:13:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///nsm_covariance.dart:13:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance.dart:13:7 -> SymbolConstant(#_method2)
Evaluated: ListLiteral @ org-dartlang-testcase:///nsm_covariance.dart:13:7 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///nsm_covariance.dart:13:7 -> ListConstant(const <dynamic>[])
@@ -232,7 +232,7 @@
Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance.dart:13:7 -> SymbolConstant(#d)
Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance.dart:13:7 -> SymbolConstant(#_method3)
Evaluated: ListLiteral @ org-dartlang-testcase:///nsm_covariance.dart:13:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///nsm_covariance.dart:13:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///nsm_covariance.dart:13:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance.dart:13:7 -> SymbolConstant(#_method4)
Evaluated: ListLiteral @ org-dartlang-testcase:///nsm_covariance.dart:13:7 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///nsm_covariance.dart:13:7 -> ListConstant(const <dynamic>[])
@@ -241,7 +241,7 @@
Evaluated: StaticGet @ org-dartlang-testcase:///nsm_covariance.dart:19:4 -> InstanceConstant(const _Override{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance.dart:18:7 -> SymbolConstant(#_method1)
Evaluated: ListLiteral @ org-dartlang-testcase:///nsm_covariance.dart:18:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///nsm_covariance.dart:18:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///nsm_covariance.dart:18:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance.dart:18:7 -> SymbolConstant(#_method2)
Evaluated: ListLiteral @ org-dartlang-testcase:///nsm_covariance.dart:18:7 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///nsm_covariance.dart:18:7 -> ListConstant(const <dynamic>[])
@@ -251,7 +251,7 @@
Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance.dart:18:7 -> SymbolConstant(#d)
Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance.dart:18:7 -> SymbolConstant(#_method3)
Evaluated: ListLiteral @ org-dartlang-testcase:///nsm_covariance.dart:18:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///nsm_covariance.dart:18:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///nsm_covariance.dart:18:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance.dart:18:7 -> SymbolConstant(#_method4)
Evaluated: ListLiteral @ org-dartlang-testcase:///nsm_covariance.dart:18:7 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///nsm_covariance.dart:18:7 -> ListConstant(const <dynamic>[])
@@ -260,7 +260,7 @@
Evaluated: StaticGet @ org-dartlang-testcase:///nsm_covariance_lib.dart:24:4 -> InstanceConstant(const _Override{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance_lib.dart:23:7 -> SymbolConstant(#_method1)
Evaluated: ListLiteral @ org-dartlang-testcase:///nsm_covariance_lib.dart:23:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///nsm_covariance_lib.dart:23:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///nsm_covariance_lib.dart:23:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance_lib.dart:23:7 -> SymbolConstant(#_method2)
Evaluated: ListLiteral @ org-dartlang-testcase:///nsm_covariance_lib.dart:23:7 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///nsm_covariance_lib.dart:23:7 -> ListConstant(const <dynamic>[])
@@ -270,7 +270,7 @@
Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance_lib.dart:23:7 -> SymbolConstant(#d)
Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance_lib.dart:23:7 -> SymbolConstant(#_method3)
Evaluated: ListLiteral @ org-dartlang-testcase:///nsm_covariance_lib.dart:23:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///nsm_covariance_lib.dart:23:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///nsm_covariance_lib.dart:23:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance_lib.dart:23:7 -> SymbolConstant(#_method4)
Evaluated: ListLiteral @ org-dartlang-testcase:///nsm_covariance_lib.dart:23:7 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///nsm_covariance_lib.dart:23:7 -> ListConstant(const <dynamic>[])
@@ -279,7 +279,7 @@
Evaluated: StaticGet @ org-dartlang-testcase:///nsm_covariance_lib.dart:29:4 -> InstanceConstant(const _Override{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance_lib.dart:28:7 -> SymbolConstant(#_method1)
Evaluated: ListLiteral @ org-dartlang-testcase:///nsm_covariance_lib.dart:28:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///nsm_covariance_lib.dart:28:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///nsm_covariance_lib.dart:28:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance_lib.dart:28:7 -> SymbolConstant(#_method2)
Evaluated: ListLiteral @ org-dartlang-testcase:///nsm_covariance_lib.dart:28:7 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///nsm_covariance_lib.dart:28:7 -> ListConstant(const <dynamic>[])
@@ -289,7 +289,7 @@
Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance_lib.dart:28:7 -> SymbolConstant(#d)
Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance_lib.dart:28:7 -> SymbolConstant(#_method3)
Evaluated: ListLiteral @ org-dartlang-testcase:///nsm_covariance_lib.dart:28:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///nsm_covariance_lib.dart:28:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///nsm_covariance_lib.dart:28:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance_lib.dart:28:7 -> SymbolConstant(#_method4)
Evaluated: ListLiteral @ org-dartlang-testcase:///nsm_covariance_lib.dart:28:7 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///nsm_covariance_lib.dart:28:7 -> ListConstant(const <dynamic>[])
diff --git a/pkg/front_end/testcases/general/nsm_covariance.dart.weak.transformed.expect b/pkg/front_end/testcases/general/nsm_covariance.dart.weak.transformed.expect
index e66febb..2afdeb8 100644
--- a/pkg/front_end/testcases/general/nsm_covariance.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/nsm_covariance.dart.weak.transformed.expect
@@ -60,13 +60,13 @@
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
no-such-method-forwarder method _method1(core::int* a, covariant core::int* b, generic-covariant-impl core::int* c, covariant generic-covariant-impl core::int* d) → void
- return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#C3, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal4<dynamic>(a, b, c, d)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic};
+ return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#C3, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal4<dynamic>(a, b, c, d)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation*) →* dynamic};
no-such-method-forwarder method _method2({core::int* a = #C1, covariant core::int* b = #C1, generic-covariant-impl core::int* c = #C1, covariant generic-covariant-impl core::int* d = #C1}) → void
- return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C4, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation*) →* dynamic};
+ return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation*) →* dynamic};
no-such-method-forwarder method _method3(covariant core::int* a, generic-covariant-impl core::int* b) → void
- return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#C12, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal2<dynamic>(a, b)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic};
+ return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#C12, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal2<dynamic>(a, b)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation*) →* dynamic};
no-such-method-forwarder method _method4({covariant core::int* a = #C1, generic-covariant-impl core::int* b = #C1}) → void
- return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#C13, 0, #C4, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b}))){(core::Invocation*) →* dynamic};
+ return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#C13, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b}))){(core::Invocation*) →* dynamic};
}
class D4 extends core::Object implements nsm::B, nsm::A<core::int*> {
synthetic constructor •() → self::D4*
@@ -85,13 +85,13 @@
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
no-such-method-forwarder method _method1(core::int* x, covariant core::int* y, generic-covariant-impl core::int* z, covariant generic-covariant-impl core::int* w) → void
- return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#C3, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal4<dynamic>(x, y, z, w)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic};
+ return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#C3, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal4<dynamic>(x, y, z, w)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation*) →* dynamic};
no-such-method-forwarder method _method2({core::int* a = #C1, covariant core::int* b = #C1, generic-covariant-impl core::int* c = #C1, covariant generic-covariant-impl core::int* d = #C1}) → void
- return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C4, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation*) →* dynamic};
+ return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation*) →* dynamic};
no-such-method-forwarder method _method3(covariant core::int* x, generic-covariant-impl core::int* y) → void
- return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#C12, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal2<dynamic>(x, y)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic};
+ return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#C12, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal2<dynamic>(x, y)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation*) →* dynamic};
no-such-method-forwarder method _method4({covariant core::int* a = #C1, generic-covariant-impl core::int* b = #C1}) → void
- return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#C13, 0, #C4, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b}))){(core::Invocation*) →* dynamic};
+ return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#C13, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b}))){(core::Invocation*) →* dynamic};
}
static method main() → dynamic {}
@@ -192,13 +192,13 @@
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
no-such-method-forwarder method _method1(core::int* a, covariant core::int* b, generic-covariant-impl core::int* c, covariant generic-covariant-impl core::int* d) → void
- return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C14, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal4<dynamic>(a, b, c, d)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic};
+ return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C14, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal4<dynamic>(a, b, c, d)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation*) →* dynamic};
no-such-method-forwarder method _method2({core::int* a = #C1, covariant core::int* b = #C1, generic-covariant-impl core::int* c = #C1, covariant generic-covariant-impl core::int* d = #C1}) → void
- return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C15, 0, #C4, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation*) →* dynamic};
+ return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C15, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation*) →* dynamic};
no-such-method-forwarder method _method3(covariant core::int* a, generic-covariant-impl core::int* b) → void
- return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C16, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal2<dynamic>(a, b)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic};
+ return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C16, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal2<dynamic>(a, b)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation*) →* dynamic};
no-such-method-forwarder method _method4({covariant core::int* a = #C1, generic-covariant-impl core::int* b = #C1}) → void
- return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C17, 0, #C4, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b}))){(core::Invocation*) →* dynamic};
+ return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C17, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b}))){(core::Invocation*) →* dynamic};
}
class C4 extends core::Object implements nsm::B, nsm::A<core::int*> {
synthetic constructor •() → nsm::C4*
@@ -217,13 +217,13 @@
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
no-such-method-forwarder method _method1(core::int* x, covariant core::int* y, generic-covariant-impl core::int* z, covariant generic-covariant-impl core::int* w) → void
- return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C14, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal4<dynamic>(x, y, z, w)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic};
+ return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C14, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal4<dynamic>(x, y, z, w)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation*) →* dynamic};
no-such-method-forwarder method _method2({core::int* a = #C1, covariant core::int* b = #C1, generic-covariant-impl core::int* c = #C1, covariant generic-covariant-impl core::int* d = #C1}) → void
- return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C15, 0, #C4, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation*) →* dynamic};
+ return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C15, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation*) →* dynamic};
no-such-method-forwarder method _method3(covariant core::int* x, generic-covariant-impl core::int* y) → void
- return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C16, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal2<dynamic>(x, y)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic};
+ return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C16, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal2<dynamic>(x, y)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation*) →* dynamic};
no-such-method-forwarder method _method4({covariant core::int* a = #C1, generic-covariant-impl core::int* b = #C1}) → void
- return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C17, 0, #C4, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b}))){(core::Invocation*) →* dynamic};
+ return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C17, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b}))){(core::Invocation*) →* dynamic};
}
constants {
@@ -231,9 +231,9 @@
#C2 = core::_Override {}
#C3 = #org-dartlang-testcase:///nsm_covariance.dart::_method1
#C4 = <core::Type*>[]
- #C5 = <dynamic>[]
- #C6 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C5}
- #C7 = #org-dartlang-testcase:///nsm_covariance.dart::_method2
+ #C5 = <core::Symbol*, dynamic>{)
+ #C6 = #org-dartlang-testcase:///nsm_covariance.dart::_method2
+ #C7 = <dynamic>[]
#C8 = #a
#C9 = #b
#C10 = #c
diff --git a/pkg/front_end/testcases/general/private_method_tearoff.dart.weak.expect b/pkg/front_end/testcases/general/private_method_tearoff.dart.weak.expect
index 4ada913..ca1fea0 100644
--- a/pkg/front_end/testcases/general/private_method_tearoff.dart.weak.expect
+++ b/pkg/front_end/testcases/general/private_method_tearoff.dart.weak.expect
@@ -59,5 +59,5 @@
#C1 = #org-dartlang-testcase:///private_method_tearoff.dart::_f
#C2 = <core::Type*>[]
#C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C4 = <core::Symbol*, dynamic>{)
}
diff --git a/pkg/front_end/testcases/general/private_method_tearoff.dart.weak.outline.expect b/pkg/front_end/testcases/general/private_method_tearoff.dart.weak.outline.expect
index 6cb829a..384c64d 100644
--- a/pkg/front_end/testcases/general/private_method_tearoff.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/private_method_tearoff.dart.weak.outline.expect
@@ -56,5 +56,5 @@
Evaluated: SymbolLiteral @ org-dartlang-testcase:///private_method_tearoff_lib.dart:8:8 -> SymbolConstant(#_f)
Evaluated: ListLiteral @ org-dartlang-testcase:///private_method_tearoff_lib.dart:8:8 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///private_method_tearoff_lib.dart:8:8 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///private_method_tearoff_lib.dart:8:8 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///private_method_tearoff_lib.dart:8:8 -> MapConstant(const <Symbol*, dynamic>{})
Extra constant evaluation: evaluated: 8, effectively constant: 4
diff --git a/pkg/front_end/testcases/general/private_method_tearoff.dart.weak.transformed.expect b/pkg/front_end/testcases/general/private_method_tearoff.dart.weak.transformed.expect
index 4ada913..ca1fea0 100644
--- a/pkg/front_end/testcases/general/private_method_tearoff.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/private_method_tearoff.dart.weak.transformed.expect
@@ -59,5 +59,5 @@
#C1 = #org-dartlang-testcase:///private_method_tearoff.dart::_f
#C2 = <core::Type*>[]
#C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C4 = <core::Symbol*, dynamic>{)
}
diff --git a/pkg/front_end/testcases/general/super_nsm.dart.weak.expect b/pkg/front_end/testcases/general/super_nsm.dart.weak.expect
index 949ce24..671d437 100644
--- a/pkg/front_end/testcases/general/super_nsm.dart.weak.expect
+++ b/pkg/front_end/testcases/general/super_nsm.dart.weak.expect
@@ -55,5 +55,5 @@
#C1 = #interfaceMethod
#C2 = <core::Type*>[]
#C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C4 = <core::Symbol*, dynamic>{)
}
diff --git a/pkg/front_end/testcases/general/super_nsm.dart.weak.outline.expect b/pkg/front_end/testcases/general/super_nsm.dart.weak.outline.expect
index 8b77ef2..436dba3 100644
--- a/pkg/front_end/testcases/general/super_nsm.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/super_nsm.dart.weak.outline.expect
@@ -50,5 +50,5 @@
Evaluated: SymbolLiteral @ org-dartlang-testcase:///super_nsm.dart:6:3 -> SymbolConstant(#interfaceMethod)
Evaluated: ListLiteral @ org-dartlang-testcase:///super_nsm.dart:6:3 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///super_nsm.dart:6:3 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///super_nsm.dart:6:3 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///super_nsm.dart:6:3 -> MapConstant(const <Symbol*, dynamic>{})
Extra constant evaluation: evaluated: 9, effectively constant: 4
diff --git a/pkg/front_end/testcases/general/super_nsm.dart.weak.transformed.expect b/pkg/front_end/testcases/general/super_nsm.dart.weak.transformed.expect
index 949ce24..671d437 100644
--- a/pkg/front_end/testcases/general/super_nsm.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/super_nsm.dart.weak.transformed.expect
@@ -55,5 +55,5 @@
#C1 = #interfaceMethod
#C2 = <core::Type*>[]
#C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C4 = <core::Symbol*, dynamic>{)
}
diff --git a/pkg/front_end/testcases/incremental/constant_set_literal.yaml.world.1.expect b/pkg/front_end/testcases/incremental/constant_set_literal.yaml.world.1.expect
index 98a923f..c6642dc 100644
--- a/pkg/front_end/testcases/incremental/constant_set_literal.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/constant_set_literal.yaml.world.1.expect
@@ -1,26 +1,21 @@
main = main::main;
library from "org-dartlang-test:///lib.dart" as lib {
- static const field dart.core::Set<dart.core::String*>* bar = #C6;
+ static const field dart.core::Set<dart.core::String*>* bar = #C3;
}
library from "org-dartlang-test:///main.dart" as main {
import "org-dartlang-test:///lib.dart";
- static const field dart.core::Set<dart.core::String*>* foo = #C9;
+ static const field dart.core::Set<dart.core::String*>* foo = #C4;
static method main() → dynamic {
- dart.core::print(#C9);
- dart.core::print(#C6);
+ dart.core::print(#C4);
+ dart.core::print(#C3);
}
}
constants {
#C1 = "hello"
- #C2 = null
- #C3 = "world"
- #C4 = <dynamic>[#C1, #C2, #C3, #C2]
- #C5 = dart.core::_ImmutableMap<dart.core::String*, Null> {_kvPairs:#C4}
- #C6 = dart.collection::_UnmodifiableSet<dart.core::String*> {_map:#C5}
- #C7 = <dynamic>[]
- #C8 = dart.core::_ImmutableMap<dart.core::String*, Null> {_kvPairs:#C7}
- #C9 = dart.collection::_UnmodifiableSet<dart.core::String*> {_map:#C8}
+ #C2 = "world"
+ #C3 = <dart.core::String*>{#C1, #C2}
+ #C4 = <dart.core::String*>{}
}
diff --git a/pkg/front_end/testcases/incremental/constant_set_literal.yaml.world.2.expect b/pkg/front_end/testcases/incremental/constant_set_literal.yaml.world.2.expect
index 3e1ca84..e7dc08e 100644
--- a/pkg/front_end/testcases/incremental/constant_set_literal.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/constant_set_literal.yaml.world.2.expect
@@ -1,25 +1,20 @@
main = main::main;
library from "org-dartlang-test:///lib.dart" as lib {
- static const field dart.core::Set<dart.core::int*>* bar = #C5;
+ static const field dart.core::Set<dart.core::int*>* bar = #C2;
}
library from "org-dartlang-test:///main.dart" as main {
import "org-dartlang-test:///lib.dart";
- static const field dart.core::Set<dart.core::String*>* foo = #C8;
+ static const field dart.core::Set<dart.core::String*>* foo = #C3;
static method main() → dynamic {
- dart.core::print(#C8);
- dart.core::print(#C5);
+ dart.core::print(#C3);
+ dart.core::print(#C2);
}
}
constants {
#C1 = 42
- #C2 = null
- #C3 = <dynamic>[#C1, #C2]
- #C4 = dart.core::_ImmutableMap<dart.core::int*, Null> {_kvPairs:#C3}
- #C5 = dart.collection::_UnmodifiableSet<dart.core::int*> {_map:#C4}
- #C6 = <dynamic>[]
- #C7 = dart.core::_ImmutableMap<dart.core::String*, Null> {_kvPairs:#C6}
- #C8 = dart.collection::_UnmodifiableSet<dart.core::String*> {_map:#C7}
+ #C2 = <dart.core::int*>{#C1}
+ #C3 = <dart.core::String*>{}
}
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_16.yaml.world.1.expect b/pkg/front_end/testcases/incremental/no_outline_change_16.yaml.world.1.expect
index 9c81633..6f8c60d 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_16.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_16.yaml.world.1.expect
@@ -71,7 +71,7 @@
#C1 = #getter
#C2 = <dart.core::Type*>[]
#C3 = <dynamic>[]
- #C4 = dart.core::_ImmutableMap<dart.core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C4 = <dart.core::Symbol*, dynamic>{)
#C5 = #method
#C6 = #setter=
#C7 = #field
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_16.yaml.world.2.expect b/pkg/front_end/testcases/incremental/no_outline_change_16.yaml.world.2.expect
index b2fcdc2..546d558 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_16.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_16.yaml.world.2.expect
@@ -71,7 +71,7 @@
#C1 = #getter
#C2 = <dart.core::Type*>[]
#C3 = <dynamic>[]
- #C4 = dart.core::_ImmutableMap<dart.core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C4 = <dart.core::Symbol*, dynamic>{)
#C5 = #method
#C6 = #setter=
#C7 = #field
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart.weak.expect b/pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart.weak.expect
index 2126542..ab58333 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart.weak.expect
@@ -75,7 +75,7 @@
import self as self;
import "dart:core" as core;
-static method foo([core::Map<core::int*, core::String*>* m1 = #C4, core::Map<core::int*, core::String*>* m2 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:12:79: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+static method foo([core::Map<core::int*, core::String*>* m1 = #C3, core::Map<core::int*, core::String*>* m2 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:12:79: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
/*error:MAP_KEY_TYPE_NOT_ASSIGNABLE,error:MAP_KEY_TYPE_NOT_ASSIGNABLE*/ \"hello\":
^"]) → void {}
static method test() → void {
@@ -157,6 +157,5 @@
constants {
#C1 = 1
#C2 = "hello"
- #C3 = <dynamic>[#C1, #C2]
- #C4 = core::_ImmutableMap<core::int*, core::String*> {_kvPairs:#C3}
+ #C3 = <core::int*, core::String*>{#C1:#C2)
}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart.weak.transformed.expect
index 2126542..ab58333 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart.weak.transformed.expect
@@ -75,7 +75,7 @@
import self as self;
import "dart:core" as core;
-static method foo([core::Map<core::int*, core::String*>* m1 = #C4, core::Map<core::int*, core::String*>* m2 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:12:79: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+static method foo([core::Map<core::int*, core::String*>* m1 = #C3, core::Map<core::int*, core::String*>* m2 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:12:79: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
/*error:MAP_KEY_TYPE_NOT_ASSIGNABLE,error:MAP_KEY_TYPE_NOT_ASSIGNABLE*/ \"hello\":
^"]) → void {}
static method test() → void {
@@ -157,6 +157,5 @@
constants {
#C1 = 1
#C2 = "hello"
- #C3 = <dynamic>[#C1, #C2]
- #C4 = core::_ImmutableMap<core::int*, core::String*> {_kvPairs:#C3}
+ #C3 = <core::int*, core::String*>{#C1:#C2)
}
diff --git a/pkg/front_end/testcases/inference/future_then.dart.weak.expect b/pkg/front_end/testcases/inference/future_then.dart.weak.expect
index 43b73f6..79f586d 100644
--- a/pkg/front_end/testcases/inference/future_then.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_then.dart.weak.expect
@@ -26,9 +26,9 @@
no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
}
@@ -59,9 +59,9 @@
#C3 = <core::Type*>[]
#C4 = #test
#C5 = #whenComplete
- #C6 = <dynamic>[]
- #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
- #C8 = #asStream
+ #C6 = <core::Symbol*, dynamic>{)
+ #C7 = #asStream
+ #C8 = <dynamic>[]
#C9 = #timeout
#C10 = #onTimeout
}
diff --git a/pkg/front_end/testcases/inference/future_then.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then.dart.weak.outline.expect
index 29a6f55..fa70fa8 100644
--- a/pkg/front_end/testcases/inference/future_then.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then.dart.weak.outline.expect
@@ -44,11 +44,11 @@
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then.dart:10:7 -> SymbolConstant(#test)
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then.dart:10:7 -> SymbolConstant(#whenComplete)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then.dart:10:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///future_then.dart:10:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///future_then.dart:10:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then.dart:10:7 -> SymbolConstant(#asStream)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then.dart:10:7 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then.dart:10:7 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///future_then.dart:10:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///future_then.dart:10:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then.dart:10:7 -> SymbolConstant(#timeout)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then.dart:10:7 -> ListConstant(const <Type*>[])
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then.dart:10:7 -> SymbolConstant(#onTimeout)
diff --git a/pkg/front_end/testcases/inference/future_then.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then.dart.weak.transformed.expect
index fb0fe5f..ebbb28f 100644
--- a/pkg/front_end/testcases/inference/future_then.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then.dart.weak.transformed.expect
@@ -27,9 +27,9 @@
no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
}
@@ -214,9 +214,9 @@
#C3 = <core::Type*>[]
#C4 = #test
#C5 = #whenComplete
- #C6 = <dynamic>[]
- #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
- #C8 = #asStream
+ #C6 = <core::Symbol*, dynamic>{)
+ #C7 = #asStream
+ #C8 = <dynamic>[]
#C9 = #timeout
#C10 = #onTimeout
}
diff --git a/pkg/front_end/testcases/inference/future_then_2.dart.weak.expect b/pkg/front_end/testcases/inference/future_then_2.dart.weak.expect
index 251ec40..8f3643d 100644
--- a/pkg/front_end/testcases/inference/future_then_2.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_then_2.dart.weak.expect
@@ -26,9 +26,9 @@
no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
}
@@ -59,9 +59,9 @@
#C3 = <core::Type*>[]
#C4 = #test
#C5 = #whenComplete
- #C6 = <dynamic>[]
- #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
- #C8 = #asStream
+ #C6 = <core::Symbol*, dynamic>{)
+ #C7 = #asStream
+ #C8 = <dynamic>[]
#C9 = #timeout
#C10 = #onTimeout
}
diff --git a/pkg/front_end/testcases/inference/future_then_2.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then_2.dart.weak.outline.expect
index 36ab6a8..3331b4b 100644
--- a/pkg/front_end/testcases/inference/future_then_2.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_2.dart.weak.outline.expect
@@ -44,11 +44,11 @@
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_2.dart:10:7 -> SymbolConstant(#test)
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_2.dart:10:7 -> SymbolConstant(#whenComplete)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_2.dart:10:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_2.dart:10:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_2.dart:10:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_2.dart:10:7 -> SymbolConstant(#asStream)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_2.dart:10:7 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_2.dart:10:7 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_2.dart:10:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_2.dart:10:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_2.dart:10:7 -> SymbolConstant(#timeout)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_2.dart:10:7 -> ListConstant(const <Type*>[])
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_2.dart:10:7 -> SymbolConstant(#onTimeout)
diff --git a/pkg/front_end/testcases/inference/future_then_2.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_2.dart.weak.transformed.expect
index 4713e78..15051a3 100644
--- a/pkg/front_end/testcases/inference/future_then_2.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_2.dart.weak.transformed.expect
@@ -27,9 +27,9 @@
no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
}
@@ -214,9 +214,9 @@
#C3 = <core::Type*>[]
#C4 = #test
#C5 = #whenComplete
- #C6 = <dynamic>[]
- #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
- #C8 = #asStream
+ #C6 = <core::Symbol*, dynamic>{)
+ #C7 = #asStream
+ #C8 = <dynamic>[]
#C9 = #timeout
#C10 = #onTimeout
}
diff --git a/pkg/front_end/testcases/inference/future_then_3.dart.weak.expect b/pkg/front_end/testcases/inference/future_then_3.dart.weak.expect
index 7eca3d0..d9cb030 100644
--- a/pkg/front_end/testcases/inference/future_then_3.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_then_3.dart.weak.expect
@@ -26,9 +26,9 @@
no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
}
@@ -59,9 +59,9 @@
#C3 = <core::Type*>[]
#C4 = #test
#C5 = #whenComplete
- #C6 = <dynamic>[]
- #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
- #C8 = #asStream
+ #C6 = <core::Symbol*, dynamic>{)
+ #C7 = #asStream
+ #C8 = <dynamic>[]
#C9 = #timeout
#C10 = #onTimeout
}
diff --git a/pkg/front_end/testcases/inference/future_then_3.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then_3.dart.weak.outline.expect
index e35da6b..92505c9 100644
--- a/pkg/front_end/testcases/inference/future_then_3.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_3.dart.weak.outline.expect
@@ -44,11 +44,11 @@
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_3.dart:10:7 -> SymbolConstant(#test)
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_3.dart:10:7 -> SymbolConstant(#whenComplete)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_3.dart:10:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_3.dart:10:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_3.dart:10:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_3.dart:10:7 -> SymbolConstant(#asStream)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_3.dart:10:7 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_3.dart:10:7 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_3.dart:10:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_3.dart:10:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_3.dart:10:7 -> SymbolConstant(#timeout)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_3.dart:10:7 -> ListConstant(const <Type*>[])
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_3.dart:10:7 -> SymbolConstant(#onTimeout)
diff --git a/pkg/front_end/testcases/inference/future_then_3.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_3.dart.weak.transformed.expect
index 525da31..368ce6e 100644
--- a/pkg/front_end/testcases/inference/future_then_3.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_3.dart.weak.transformed.expect
@@ -27,9 +27,9 @@
no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
}
@@ -214,9 +214,9 @@
#C3 = <core::Type*>[]
#C4 = #test
#C5 = #whenComplete
- #C6 = <dynamic>[]
- #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
- #C8 = #asStream
+ #C6 = <core::Symbol*, dynamic>{)
+ #C7 = #asStream
+ #C8 = <dynamic>[]
#C9 = #timeout
#C10 = #onTimeout
}
diff --git a/pkg/front_end/testcases/inference/future_then_4.dart.weak.expect b/pkg/front_end/testcases/inference/future_then_4.dart.weak.expect
index 37e0e62..c491abd 100644
--- a/pkg/front_end/testcases/inference/future_then_4.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_then_4.dart.weak.expect
@@ -26,9 +26,9 @@
no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
}
@@ -59,9 +59,9 @@
#C3 = <core::Type*>[]
#C4 = #test
#C5 = #whenComplete
- #C6 = <dynamic>[]
- #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
- #C8 = #asStream
+ #C6 = <core::Symbol*, dynamic>{)
+ #C7 = #asStream
+ #C8 = <dynamic>[]
#C9 = #timeout
#C10 = #onTimeout
}
diff --git a/pkg/front_end/testcases/inference/future_then_4.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then_4.dart.weak.outline.expect
index 5908716..0d4b044 100644
--- a/pkg/front_end/testcases/inference/future_then_4.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_4.dart.weak.outline.expect
@@ -44,11 +44,11 @@
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_4.dart:10:7 -> SymbolConstant(#test)
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_4.dart:10:7 -> SymbolConstant(#whenComplete)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_4.dart:10:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_4.dart:10:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_4.dart:10:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_4.dart:10:7 -> SymbolConstant(#asStream)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_4.dart:10:7 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_4.dart:10:7 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_4.dart:10:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_4.dart:10:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_4.dart:10:7 -> SymbolConstant(#timeout)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_4.dart:10:7 -> ListConstant(const <Type*>[])
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_4.dart:10:7 -> SymbolConstant(#onTimeout)
diff --git a/pkg/front_end/testcases/inference/future_then_4.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_4.dart.weak.transformed.expect
index 2f0c903..d176677 100644
--- a/pkg/front_end/testcases/inference/future_then_4.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_4.dart.weak.transformed.expect
@@ -27,9 +27,9 @@
no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
}
@@ -214,9 +214,9 @@
#C3 = <core::Type*>[]
#C4 = #test
#C5 = #whenComplete
- #C6 = <dynamic>[]
- #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
- #C8 = #asStream
+ #C6 = <core::Symbol*, dynamic>{)
+ #C7 = #asStream
+ #C8 = <dynamic>[]
#C9 = #timeout
#C10 = #onTimeout
}
diff --git a/pkg/front_end/testcases/inference/future_then_5.dart.weak.expect b/pkg/front_end/testcases/inference/future_then_5.dart.weak.expect
index 1917e07..aa3d05d 100644
--- a/pkg/front_end/testcases/inference/future_then_5.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_then_5.dart.weak.expect
@@ -26,9 +26,9 @@
no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
}
@@ -59,9 +59,9 @@
#C3 = <core::Type*>[]
#C4 = #test
#C5 = #whenComplete
- #C6 = <dynamic>[]
- #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
- #C8 = #asStream
+ #C6 = <core::Symbol*, dynamic>{)
+ #C7 = #asStream
+ #C8 = <dynamic>[]
#C9 = #timeout
#C10 = #onTimeout
}
diff --git a/pkg/front_end/testcases/inference/future_then_5.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then_5.dart.weak.outline.expect
index b699b6c..cd0922d 100644
--- a/pkg/front_end/testcases/inference/future_then_5.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_5.dart.weak.outline.expect
@@ -44,11 +44,11 @@
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_5.dart:10:7 -> SymbolConstant(#test)
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_5.dart:10:7 -> SymbolConstant(#whenComplete)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_5.dart:10:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_5.dart:10:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_5.dart:10:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_5.dart:10:7 -> SymbolConstant(#asStream)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_5.dart:10:7 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_5.dart:10:7 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_5.dart:10:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_5.dart:10:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_5.dart:10:7 -> SymbolConstant(#timeout)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_5.dart:10:7 -> ListConstant(const <Type*>[])
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_5.dart:10:7 -> SymbolConstant(#onTimeout)
diff --git a/pkg/front_end/testcases/inference/future_then_5.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_5.dart.weak.transformed.expect
index c03423b..318e683 100644
--- a/pkg/front_end/testcases/inference/future_then_5.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_5.dart.weak.transformed.expect
@@ -27,9 +27,9 @@
no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
}
@@ -214,9 +214,9 @@
#C3 = <core::Type*>[]
#C4 = #test
#C5 = #whenComplete
- #C6 = <dynamic>[]
- #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
- #C8 = #asStream
+ #C6 = <core::Symbol*, dynamic>{)
+ #C7 = #asStream
+ #C8 = <dynamic>[]
#C9 = #timeout
#C10 = #onTimeout
}
diff --git a/pkg/front_end/testcases/inference/future_then_6.dart.weak.expect b/pkg/front_end/testcases/inference/future_then_6.dart.weak.expect
index fa683c126..75d2f5d 100644
--- a/pkg/front_end/testcases/inference/future_then_6.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_then_6.dart.weak.expect
@@ -26,9 +26,9 @@
no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
}
@@ -59,9 +59,9 @@
#C3 = <core::Type*>[]
#C4 = #test
#C5 = #whenComplete
- #C6 = <dynamic>[]
- #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
- #C8 = #asStream
+ #C6 = <core::Symbol*, dynamic>{)
+ #C7 = #asStream
+ #C8 = <dynamic>[]
#C9 = #timeout
#C10 = #onTimeout
}
diff --git a/pkg/front_end/testcases/inference/future_then_6.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then_6.dart.weak.outline.expect
index d9c4871..6a4d2fb 100644
--- a/pkg/front_end/testcases/inference/future_then_6.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_6.dart.weak.outline.expect
@@ -44,11 +44,11 @@
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_6.dart:10:7 -> SymbolConstant(#test)
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_6.dart:10:7 -> SymbolConstant(#whenComplete)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_6.dart:10:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_6.dart:10:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_6.dart:10:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_6.dart:10:7 -> SymbolConstant(#asStream)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_6.dart:10:7 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_6.dart:10:7 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_6.dart:10:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_6.dart:10:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_6.dart:10:7 -> SymbolConstant(#timeout)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_6.dart:10:7 -> ListConstant(const <Type*>[])
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_6.dart:10:7 -> SymbolConstant(#onTimeout)
diff --git a/pkg/front_end/testcases/inference/future_then_6.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_6.dart.weak.transformed.expect
index ab76385..f4dfb05 100644
--- a/pkg/front_end/testcases/inference/future_then_6.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_6.dart.weak.transformed.expect
@@ -27,9 +27,9 @@
no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
}
@@ -214,9 +214,9 @@
#C3 = <core::Type*>[]
#C4 = #test
#C5 = #whenComplete
- #C6 = <dynamic>[]
- #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
- #C8 = #asStream
+ #C6 = <core::Symbol*, dynamic>{)
+ #C7 = #asStream
+ #C8 = <dynamic>[]
#C9 = #timeout
#C10 = #onTimeout
}
diff --git a/pkg/front_end/testcases/inference/future_then_conditional.dart.weak.expect b/pkg/front_end/testcases/inference/future_then_conditional.dart.weak.expect
index 484270e..fb4378d 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional.dart.weak.expect
@@ -26,9 +26,9 @@
no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
}
@@ -51,9 +51,9 @@
#C3 = <core::Type*>[]
#C4 = #test
#C5 = #whenComplete
- #C6 = <dynamic>[]
- #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
- #C8 = #asStream
+ #C6 = <core::Symbol*, dynamic>{)
+ #C7 = #asStream
+ #C8 = <dynamic>[]
#C9 = #timeout
#C10 = #onTimeout
}
diff --git a/pkg/front_end/testcases/inference/future_then_conditional.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then_conditional.dart.weak.outline.expect
index cfacce7..0a27a6a 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional.dart.weak.outline.expect
@@ -44,11 +44,11 @@
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_conditional.dart:10:7 -> SymbolConstant(#test)
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_conditional.dart:10:7 -> SymbolConstant(#whenComplete)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_conditional.dart:10:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_conditional.dart:10:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_conditional.dart:10:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_conditional.dart:10:7 -> SymbolConstant(#asStream)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_conditional.dart:10:7 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_conditional.dart:10:7 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_conditional.dart:10:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_conditional.dart:10:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_conditional.dart:10:7 -> SymbolConstant(#timeout)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_conditional.dart:10:7 -> ListConstant(const <Type*>[])
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_conditional.dart:10:7 -> SymbolConstant(#onTimeout)
diff --git a/pkg/front_end/testcases/inference/future_then_conditional.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional.dart.weak.transformed.expect
index 2c0fd45..5d7a1fe 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional.dart.weak.transformed.expect
@@ -27,9 +27,9 @@
no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
}
@@ -113,9 +113,9 @@
#C3 = <core::Type*>[]
#C4 = #test
#C5 = #whenComplete
- #C6 = <dynamic>[]
- #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
- #C8 = #asStream
+ #C6 = <core::Symbol*, dynamic>{)
+ #C7 = #asStream
+ #C8 = <dynamic>[]
#C9 = #timeout
#C10 = #onTimeout
}
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.weak.expect b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.weak.expect
index 5052927..d864eac8 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.weak.expect
@@ -26,9 +26,9 @@
no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
}
@@ -51,9 +51,9 @@
#C3 = <core::Type*>[]
#C4 = #test
#C5 = #whenComplete
- #C6 = <dynamic>[]
- #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
- #C8 = #asStream
+ #C6 = <core::Symbol*, dynamic>{)
+ #C7 = #asStream
+ #C8 = <dynamic>[]
#C9 = #timeout
#C10 = #onTimeout
}
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.weak.outline.expect
index 7eb99be..27a58a7 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.weak.outline.expect
@@ -44,11 +44,11 @@
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_conditional_2.dart:10:7 -> SymbolConstant(#test)
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_conditional_2.dart:10:7 -> SymbolConstant(#whenComplete)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_conditional_2.dart:10:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_conditional_2.dart:10:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_conditional_2.dart:10:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_conditional_2.dart:10:7 -> SymbolConstant(#asStream)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_conditional_2.dart:10:7 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_conditional_2.dart:10:7 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_conditional_2.dart:10:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_conditional_2.dart:10:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_conditional_2.dart:10:7 -> SymbolConstant(#timeout)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_conditional_2.dart:10:7 -> ListConstant(const <Type*>[])
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_conditional_2.dart:10:7 -> SymbolConstant(#onTimeout)
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.weak.transformed.expect
index ada0903..f202144 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.weak.transformed.expect
@@ -27,9 +27,9 @@
no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
}
@@ -113,9 +113,9 @@
#C3 = <core::Type*>[]
#C4 = #test
#C5 = #whenComplete
- #C6 = <dynamic>[]
- #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
- #C8 = #asStream
+ #C6 = <core::Symbol*, dynamic>{)
+ #C7 = #asStream
+ #C8 = <dynamic>[]
#C9 = #timeout
#C10 = #onTimeout
}
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.weak.expect b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.weak.expect
index 01ac303..11b99b2 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.weak.expect
@@ -26,9 +26,9 @@
no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
}
@@ -51,9 +51,9 @@
#C3 = <core::Type*>[]
#C4 = #test
#C5 = #whenComplete
- #C6 = <dynamic>[]
- #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
- #C8 = #asStream
+ #C6 = <core::Symbol*, dynamic>{)
+ #C7 = #asStream
+ #C8 = <dynamic>[]
#C9 = #timeout
#C10 = #onTimeout
}
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.weak.outline.expect
index 3b812af..eaab4f9 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.weak.outline.expect
@@ -44,11 +44,11 @@
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_conditional_3.dart:10:7 -> SymbolConstant(#test)
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_conditional_3.dart:10:7 -> SymbolConstant(#whenComplete)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_conditional_3.dart:10:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_conditional_3.dart:10:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_conditional_3.dart:10:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_conditional_3.dart:10:7 -> SymbolConstant(#asStream)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_conditional_3.dart:10:7 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_conditional_3.dart:10:7 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_conditional_3.dart:10:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_conditional_3.dart:10:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_conditional_3.dart:10:7 -> SymbolConstant(#timeout)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_conditional_3.dart:10:7 -> ListConstant(const <Type*>[])
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_conditional_3.dart:10:7 -> SymbolConstant(#onTimeout)
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.weak.transformed.expect
index 057adde..b438010 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.weak.transformed.expect
@@ -27,9 +27,9 @@
no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
}
@@ -113,9 +113,9 @@
#C3 = <core::Type*>[]
#C4 = #test
#C5 = #whenComplete
- #C6 = <dynamic>[]
- #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
- #C8 = #asStream
+ #C6 = <core::Symbol*, dynamic>{)
+ #C7 = #asStream
+ #C8 = <dynamic>[]
#C9 = #timeout
#C10 = #onTimeout
}
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.weak.expect b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.weak.expect
index 9f0633d..83476f3 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.weak.expect
@@ -26,9 +26,9 @@
no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
}
@@ -51,9 +51,9 @@
#C3 = <core::Type*>[]
#C4 = #test
#C5 = #whenComplete
- #C6 = <dynamic>[]
- #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
- #C8 = #asStream
+ #C6 = <core::Symbol*, dynamic>{)
+ #C7 = #asStream
+ #C8 = <dynamic>[]
#C9 = #timeout
#C10 = #onTimeout
}
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.weak.outline.expect
index 2d775ff..813047c 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.weak.outline.expect
@@ -44,11 +44,11 @@
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_conditional_4.dart:10:7 -> SymbolConstant(#test)
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_conditional_4.dart:10:7 -> SymbolConstant(#whenComplete)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_conditional_4.dart:10:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_conditional_4.dart:10:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_conditional_4.dart:10:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_conditional_4.dart:10:7 -> SymbolConstant(#asStream)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_conditional_4.dart:10:7 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_conditional_4.dart:10:7 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_conditional_4.dart:10:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_conditional_4.dart:10:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_conditional_4.dart:10:7 -> SymbolConstant(#timeout)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_conditional_4.dart:10:7 -> ListConstant(const <Type*>[])
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_conditional_4.dart:10:7 -> SymbolConstant(#onTimeout)
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.weak.transformed.expect
index fd4b819..82dc7e6 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.weak.transformed.expect
@@ -27,9 +27,9 @@
no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
}
@@ -113,9 +113,9 @@
#C3 = <core::Type*>[]
#C4 = #test
#C5 = #whenComplete
- #C6 = <dynamic>[]
- #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
- #C8 = #asStream
+ #C6 = <core::Symbol*, dynamic>{)
+ #C7 = #asStream
+ #C8 = <dynamic>[]
#C9 = #timeout
#C10 = #onTimeout
}
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.weak.expect b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.weak.expect
index 41958f4..d4f206c 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.weak.expect
@@ -26,9 +26,9 @@
no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
}
@@ -51,9 +51,9 @@
#C3 = <core::Type*>[]
#C4 = #test
#C5 = #whenComplete
- #C6 = <dynamic>[]
- #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
- #C8 = #asStream
+ #C6 = <core::Symbol*, dynamic>{)
+ #C7 = #asStream
+ #C8 = <dynamic>[]
#C9 = #timeout
#C10 = #onTimeout
}
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.weak.outline.expect
index 3026114..61887ea 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.weak.outline.expect
@@ -44,11 +44,11 @@
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_conditional_5.dart:10:7 -> SymbolConstant(#test)
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_conditional_5.dart:10:7 -> SymbolConstant(#whenComplete)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_conditional_5.dart:10:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_conditional_5.dart:10:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_conditional_5.dart:10:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_conditional_5.dart:10:7 -> SymbolConstant(#asStream)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_conditional_5.dart:10:7 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_conditional_5.dart:10:7 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_conditional_5.dart:10:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_conditional_5.dart:10:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_conditional_5.dart:10:7 -> SymbolConstant(#timeout)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_conditional_5.dart:10:7 -> ListConstant(const <Type*>[])
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_conditional_5.dart:10:7 -> SymbolConstant(#onTimeout)
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.weak.transformed.expect
index 6e05707..834a83a 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.weak.transformed.expect
@@ -27,9 +27,9 @@
no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
}
@@ -113,9 +113,9 @@
#C3 = <core::Type*>[]
#C4 = #test
#C5 = #whenComplete
- #C6 = <dynamic>[]
- #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
- #C8 = #asStream
+ #C6 = <core::Symbol*, dynamic>{)
+ #C7 = #asStream
+ #C8 = <dynamic>[]
#C9 = #timeout
#C10 = #onTimeout
}
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.weak.expect b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.weak.expect
index 8446ce804..57630d1 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.weak.expect
@@ -26,9 +26,9 @@
no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
}
@@ -51,9 +51,9 @@
#C3 = <core::Type*>[]
#C4 = #test
#C5 = #whenComplete
- #C6 = <dynamic>[]
- #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
- #C8 = #asStream
+ #C6 = <core::Symbol*, dynamic>{)
+ #C7 = #asStream
+ #C8 = <dynamic>[]
#C9 = #timeout
#C10 = #onTimeout
}
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.weak.outline.expect
index cd341f3..d6ba05d 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.weak.outline.expect
@@ -44,11 +44,11 @@
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_conditional_6.dart:10:7 -> SymbolConstant(#test)
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_conditional_6.dart:10:7 -> SymbolConstant(#whenComplete)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_conditional_6.dart:10:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_conditional_6.dart:10:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_conditional_6.dart:10:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_conditional_6.dart:10:7 -> SymbolConstant(#asStream)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_conditional_6.dart:10:7 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_conditional_6.dart:10:7 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_conditional_6.dart:10:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_conditional_6.dart:10:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_conditional_6.dart:10:7 -> SymbolConstant(#timeout)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_conditional_6.dart:10:7 -> ListConstant(const <Type*>[])
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_conditional_6.dart:10:7 -> SymbolConstant(#onTimeout)
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.weak.transformed.expect
index 1968cbf..d4996b3 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.weak.transformed.expect
@@ -27,9 +27,9 @@
no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
}
@@ -113,9 +113,9 @@
#C3 = <core::Type*>[]
#C4 = #test
#C5 = #whenComplete
- #C6 = <dynamic>[]
- #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
- #C8 = #asStream
+ #C6 = <core::Symbol*, dynamic>{)
+ #C7 = #asStream
+ #C8 = <dynamic>[]
#C9 = #timeout
#C10 = #onTimeout
}
diff --git a/pkg/front_end/testcases/inference/future_then_ifNull.dart.weak.expect b/pkg/front_end/testcases/inference/future_then_ifNull.dart.weak.expect
index da7400e..3a30b28 100644
--- a/pkg/front_end/testcases/inference/future_then_ifNull.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_then_ifNull.dart.weak.expect
@@ -26,9 +26,9 @@
no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
}
@@ -51,9 +51,9 @@
#C3 = <core::Type*>[]
#C4 = #test
#C5 = #whenComplete
- #C6 = <dynamic>[]
- #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
- #C8 = #asStream
+ #C6 = <core::Symbol*, dynamic>{)
+ #C7 = #asStream
+ #C8 = <dynamic>[]
#C9 = #timeout
#C10 = #onTimeout
}
diff --git a/pkg/front_end/testcases/inference/future_then_ifNull.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then_ifNull.dart.weak.outline.expect
index ffd3fdd..06ec4a9 100644
--- a/pkg/front_end/testcases/inference/future_then_ifNull.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_ifNull.dart.weak.outline.expect
@@ -44,11 +44,11 @@
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_ifNull.dart:10:7 -> SymbolConstant(#test)
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_ifNull.dart:10:7 -> SymbolConstant(#whenComplete)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_ifNull.dart:10:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_ifNull.dart:10:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_ifNull.dart:10:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_ifNull.dart:10:7 -> SymbolConstant(#asStream)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_ifNull.dart:10:7 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_ifNull.dart:10:7 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_ifNull.dart:10:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_ifNull.dart:10:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_ifNull.dart:10:7 -> SymbolConstant(#timeout)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_ifNull.dart:10:7 -> ListConstant(const <Type*>[])
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_ifNull.dart:10:7 -> SymbolConstant(#onTimeout)
diff --git a/pkg/front_end/testcases/inference/future_then_ifNull.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_ifNull.dart.weak.transformed.expect
index 077bfa1..2813500 100644
--- a/pkg/front_end/testcases/inference/future_then_ifNull.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_ifNull.dart.weak.transformed.expect
@@ -27,9 +27,9 @@
no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
}
@@ -114,9 +114,9 @@
#C3 = <core::Type*>[]
#C4 = #test
#C5 = #whenComplete
- #C6 = <dynamic>[]
- #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
- #C8 = #asStream
+ #C6 = <core::Symbol*, dynamic>{)
+ #C7 = #asStream
+ #C8 = <dynamic>[]
#C9 = #timeout
#C10 = #onTimeout
}
diff --git a/pkg/front_end/testcases/inference/future_then_upwards.dart.weak.expect b/pkg/front_end/testcases/inference/future_then_upwards.dart.weak.expect
index b63576e..869eafa 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards.dart.weak.expect
@@ -35,9 +35,9 @@
no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
}
@@ -59,9 +59,9 @@
#C3 = <core::Type*>[]
#C4 = #test
#C5 = #whenComplete
- #C6 = <dynamic>[]
- #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
- #C8 = #asStream
+ #C6 = <core::Symbol*, dynamic>{)
+ #C7 = #asStream
+ #C8 = <dynamic>[]
#C9 = #timeout
#C10 = #onTimeout
}
diff --git a/pkg/front_end/testcases/inference/future_then_upwards.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then_upwards.dart.weak.outline.expect
index 64672a6..b978e12 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards.dart.weak.outline.expect
@@ -44,11 +44,11 @@
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_upwards.dart:10:7 -> SymbolConstant(#test)
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_upwards.dart:10:7 -> SymbolConstant(#whenComplete)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_upwards.dart:10:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_upwards.dart:10:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_upwards.dart:10:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_upwards.dart:10:7 -> SymbolConstant(#asStream)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_upwards.dart:10:7 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_upwards.dart:10:7 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_upwards.dart:10:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_upwards.dart:10:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_upwards.dart:10:7 -> SymbolConstant(#timeout)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_upwards.dart:10:7 -> ListConstant(const <Type*>[])
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_upwards.dart:10:7 -> SymbolConstant(#onTimeout)
diff --git a/pkg/front_end/testcases/inference/future_then_upwards.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_upwards.dart.weak.transformed.expect
index 8b4ba4e..7d2c4a1 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards.dart.weak.transformed.expect
@@ -35,9 +35,9 @@
no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
}
@@ -59,9 +59,9 @@
#C3 = <core::Type*>[]
#C4 = #test
#C5 = #whenComplete
- #C6 = <dynamic>[]
- #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
- #C8 = #asStream
+ #C6 = <core::Symbol*, dynamic>{)
+ #C7 = #asStream
+ #C8 = <dynamic>[]
#C9 = #timeout
#C10 = #onTimeout
}
diff --git a/pkg/front_end/testcases/inference/future_then_upwards_2.dart.weak.expect b/pkg/front_end/testcases/inference/future_then_upwards_2.dart.weak.expect
index 0804da7..4df6e43 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards_2.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards_2.dart.weak.expect
@@ -34,9 +34,9 @@
no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
}
@@ -57,9 +57,9 @@
#C3 = <core::Type*>[]
#C4 = #test
#C5 = #whenComplete
- #C6 = <dynamic>[]
- #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
- #C8 = #asStream
+ #C6 = <core::Symbol*, dynamic>{)
+ #C7 = #asStream
+ #C8 = <dynamic>[]
#C9 = #timeout
#C10 = #onTimeout
}
diff --git a/pkg/front_end/testcases/inference/future_then_upwards_2.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then_upwards_2.dart.weak.outline.expect
index cc0154e..44a136e 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards_2.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards_2.dart.weak.outline.expect
@@ -44,11 +44,11 @@
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_upwards_2.dart:10:7 -> SymbolConstant(#test)
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_upwards_2.dart:10:7 -> SymbolConstant(#whenComplete)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_upwards_2.dart:10:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_upwards_2.dart:10:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_upwards_2.dart:10:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_upwards_2.dart:10:7 -> SymbolConstant(#asStream)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_upwards_2.dart:10:7 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_upwards_2.dart:10:7 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_upwards_2.dart:10:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_upwards_2.dart:10:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_upwards_2.dart:10:7 -> SymbolConstant(#timeout)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_upwards_2.dart:10:7 -> ListConstant(const <Type*>[])
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_upwards_2.dart:10:7 -> SymbolConstant(#onTimeout)
diff --git a/pkg/front_end/testcases/inference/future_then_upwards_2.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_upwards_2.dart.weak.transformed.expect
index 88d7620..6d60a7f 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards_2.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards_2.dart.weak.transformed.expect
@@ -34,9 +34,9 @@
no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
}
@@ -57,9 +57,9 @@
#C3 = <core::Type*>[]
#C4 = #test
#C5 = #whenComplete
- #C6 = <dynamic>[]
- #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
- #C8 = #asStream
+ #C6 = <core::Symbol*, dynamic>{)
+ #C7 = #asStream
+ #C8 = <dynamic>[]
#C9 = #timeout
#C10 = #onTimeout
}
diff --git a/pkg/front_end/testcases/inference/future_then_upwards_3.dart.weak.expect b/pkg/front_end/testcases/inference/future_then_upwards_3.dart.weak.expect
index 4fe0984..6c6c9b4 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards_3.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards_3.dart.weak.expect
@@ -34,9 +34,9 @@
no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
}
@@ -58,9 +58,9 @@
#C3 = <core::Type*>[]
#C4 = #test
#C5 = #whenComplete
- #C6 = <dynamic>[]
- #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
- #C8 = #asStream
+ #C6 = <core::Symbol*, dynamic>{)
+ #C7 = #asStream
+ #C8 = <dynamic>[]
#C9 = #timeout
#C10 = #onTimeout
}
diff --git a/pkg/front_end/testcases/inference/future_then_upwards_3.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_then_upwards_3.dart.weak.outline.expect
index 0108d81..7c4a996 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards_3.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards_3.dart.weak.outline.expect
@@ -46,11 +46,11 @@
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_upwards_3.dart:10:7 -> SymbolConstant(#test)
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_upwards_3.dart:10:7 -> SymbolConstant(#whenComplete)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_upwards_3.dart:10:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_upwards_3.dart:10:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_upwards_3.dart:10:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_upwards_3.dart:10:7 -> SymbolConstant(#asStream)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_upwards_3.dart:10:7 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_upwards_3.dart:10:7 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_upwards_3.dart:10:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///future_then_upwards_3.dart:10:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_upwards_3.dart:10:7 -> SymbolConstant(#timeout)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_then_upwards_3.dart:10:7 -> ListConstant(const <Type*>[])
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_then_upwards_3.dart:10:7 -> SymbolConstant(#onTimeout)
diff --git a/pkg/front_end/testcases/inference/future_then_upwards_3.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_upwards_3.dart.weak.transformed.expect
index 9fc4067..b8c4c7b 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards_3.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards_3.dart.weak.transformed.expect
@@ -34,9 +34,9 @@
no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
}
@@ -58,9 +58,9 @@
#C3 = <core::Type*>[]
#C4 = #test
#C5 = #whenComplete
- #C6 = <dynamic>[]
- #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
- #C8 = #asStream
+ #C6 = <core::Symbol*, dynamic>{)
+ #C7 = #asStream
+ #C8 = <dynamic>[]
#C9 = #timeout
#C10 = #onTimeout
}
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional.dart.weak.expect b/pkg/front_end/testcases/inference/future_union_async_conditional.dart.weak.expect
index aacd7bb..fbdcf12 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional.dart.weak.expect
@@ -26,9 +26,9 @@
no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
}
@@ -49,9 +49,9 @@
#C3 = <core::Type*>[]
#C4 = #test
#C5 = #whenComplete
- #C6 = <dynamic>[]
- #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
- #C8 = #asStream
+ #C6 = <core::Symbol*, dynamic>{)
+ #C7 = #asStream
+ #C8 = <dynamic>[]
#C9 = #timeout
#C10 = #onTimeout
}
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_union_async_conditional.dart.weak.outline.expect
index 2a73d70..0da1c68 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional.dart.weak.outline.expect
@@ -48,11 +48,11 @@
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_union_async_conditional.dart:10:7 -> SymbolConstant(#test)
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_union_async_conditional.dart:10:7 -> SymbolConstant(#whenComplete)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_union_async_conditional.dart:10:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///future_union_async_conditional.dart:10:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///future_union_async_conditional.dart:10:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_union_async_conditional.dart:10:7 -> SymbolConstant(#asStream)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_union_async_conditional.dart:10:7 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///future_union_async_conditional.dart:10:7 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///future_union_async_conditional.dart:10:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///future_union_async_conditional.dart:10:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_union_async_conditional.dart:10:7 -> SymbolConstant(#timeout)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_union_async_conditional.dart:10:7 -> ListConstant(const <Type*>[])
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_union_async_conditional.dart:10:7 -> SymbolConstant(#onTimeout)
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_union_async_conditional.dart.weak.transformed.expect
index 57fa2ef..0e7e9a1 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional.dart.weak.transformed.expect
@@ -26,9 +26,9 @@
no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
}
@@ -122,9 +122,9 @@
#C3 = <core::Type*>[]
#C4 = #test
#C5 = #whenComplete
- #C6 = <dynamic>[]
- #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
- #C8 = #asStream
+ #C6 = <core::Symbol*, dynamic>{)
+ #C7 = #asStream
+ #C8 = <dynamic>[]
#C9 = #timeout
#C10 = #onTimeout
}
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.weak.expect b/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.weak.expect
index dbfb2e6..60b288f 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.weak.expect
@@ -26,9 +26,9 @@
no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
}
@@ -49,9 +49,9 @@
#C3 = <core::Type*>[]
#C4 = #test
#C5 = #whenComplete
- #C6 = <dynamic>[]
- #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
- #C8 = #asStream
+ #C6 = <core::Symbol*, dynamic>{)
+ #C7 = #asStream
+ #C8 = <dynamic>[]
#C9 = #timeout
#C10 = #onTimeout
}
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.weak.outline.expect
index 547c415..0756964 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.weak.outline.expect
@@ -48,11 +48,11 @@
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_union_async_conditional_2.dart:10:7 -> SymbolConstant(#test)
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_union_async_conditional_2.dart:10:7 -> SymbolConstant(#whenComplete)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_union_async_conditional_2.dart:10:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///future_union_async_conditional_2.dart:10:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///future_union_async_conditional_2.dart:10:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_union_async_conditional_2.dart:10:7 -> SymbolConstant(#asStream)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_union_async_conditional_2.dart:10:7 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///future_union_async_conditional_2.dart:10:7 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///future_union_async_conditional_2.dart:10:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///future_union_async_conditional_2.dart:10:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_union_async_conditional_2.dart:10:7 -> SymbolConstant(#timeout)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_union_async_conditional_2.dart:10:7 -> ListConstant(const <Type*>[])
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_union_async_conditional_2.dart:10:7 -> SymbolConstant(#onTimeout)
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.weak.transformed.expect
index 64fb6a3..3a793fb 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.weak.transformed.expect
@@ -26,9 +26,9 @@
no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
}
@@ -122,9 +122,9 @@
#C3 = <core::Type*>[]
#C4 = #test
#C5 = #whenComplete
- #C6 = <dynamic>[]
- #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
- #C8 = #asStream
+ #C6 = <core::Symbol*, dynamic>{)
+ #C7 = #asStream
+ #C8 = <dynamic>[]
#C9 = #timeout
#C10 = #onTimeout
}
diff --git a/pkg/front_end/testcases/inference/future_union_downwards.dart.weak.expect b/pkg/front_end/testcases/inference/future_union_downwards.dart.weak.expect
index 93b6668..d5fb637 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards.dart.weak.expect
@@ -33,9 +33,9 @@
no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
}
@@ -58,9 +58,9 @@
#C3 = <core::Type*>[]
#C4 = #test
#C5 = #whenComplete
- #C6 = <dynamic>[]
- #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
- #C8 = #asStream
+ #C6 = <core::Symbol*, dynamic>{)
+ #C7 = #asStream
+ #C8 = <dynamic>[]
#C9 = #timeout
#C10 = #onTimeout
}
diff --git a/pkg/front_end/testcases/inference/future_union_downwards.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_union_downwards.dart.weak.outline.expect
index 2a918af..e7977c8 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards.dart.weak.outline.expect
@@ -49,11 +49,11 @@
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_union_downwards.dart:10:7 -> SymbolConstant(#test)
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_union_downwards.dart:10:7 -> SymbolConstant(#whenComplete)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_union_downwards.dart:10:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///future_union_downwards.dart:10:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///future_union_downwards.dart:10:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_union_downwards.dart:10:7 -> SymbolConstant(#asStream)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_union_downwards.dart:10:7 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///future_union_downwards.dart:10:7 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///future_union_downwards.dart:10:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///future_union_downwards.dart:10:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_union_downwards.dart:10:7 -> SymbolConstant(#timeout)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_union_downwards.dart:10:7 -> ListConstant(const <Type*>[])
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_union_downwards.dart:10:7 -> SymbolConstant(#onTimeout)
diff --git a/pkg/front_end/testcases/inference/future_union_downwards.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_union_downwards.dart.weak.transformed.expect
index ad8c05c..03222bb 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards.dart.weak.transformed.expect
@@ -33,9 +33,9 @@
no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
}
@@ -106,9 +106,9 @@
#C3 = <core::Type*>[]
#C4 = #test
#C5 = #whenComplete
- #C6 = <dynamic>[]
- #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
- #C8 = #asStream
+ #C6 = <core::Symbol*, dynamic>{)
+ #C7 = #asStream
+ #C8 = <dynamic>[]
#C9 = #timeout
#C10 = #onTimeout
}
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_2.dart.weak.expect b/pkg/front_end/testcases/inference/future_union_downwards_2.dart.weak.expect
index 10efb8a..f725158 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_2.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_2.dart.weak.expect
@@ -26,9 +26,9 @@
no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
}
@@ -49,9 +49,9 @@
#C3 = <core::Type*>[]
#C4 = #test
#C5 = #whenComplete
- #C6 = <dynamic>[]
- #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
- #C8 = #asStream
+ #C6 = <core::Symbol*, dynamic>{)
+ #C7 = #asStream
+ #C8 = <dynamic>[]
#C9 = #timeout
#C10 = #onTimeout
}
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_2.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_union_downwards_2.dart.weak.outline.expect
index cf32cfb..0f19da5 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_2.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_2.dart.weak.outline.expect
@@ -49,11 +49,11 @@
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_union_downwards_2.dart:10:7 -> SymbolConstant(#test)
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_union_downwards_2.dart:10:7 -> SymbolConstant(#whenComplete)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_union_downwards_2.dart:10:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///future_union_downwards_2.dart:10:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///future_union_downwards_2.dart:10:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_union_downwards_2.dart:10:7 -> SymbolConstant(#asStream)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_union_downwards_2.dart:10:7 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///future_union_downwards_2.dart:10:7 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///future_union_downwards_2.dart:10:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///future_union_downwards_2.dart:10:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_union_downwards_2.dart:10:7 -> SymbolConstant(#timeout)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_union_downwards_2.dart:10:7 -> ListConstant(const <Type*>[])
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_union_downwards_2.dart:10:7 -> SymbolConstant(#onTimeout)
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_2.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_union_downwards_2.dart.weak.transformed.expect
index d88b25c..e855582 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_2.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_2.dart.weak.transformed.expect
@@ -26,9 +26,9 @@
no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
}
@@ -97,9 +97,9 @@
#C3 = <core::Type*>[]
#C4 = #test
#C5 = #whenComplete
- #C6 = <dynamic>[]
- #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
- #C8 = #asStream
+ #C6 = <core::Symbol*, dynamic>{)
+ #C7 = #asStream
+ #C8 = <dynamic>[]
#C9 = #timeout
#C10 = #onTimeout
}
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.weak.expect b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.weak.expect
index f9bf75b..85616d6 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.weak.expect
@@ -33,9 +33,9 @@
no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
}
@@ -58,9 +58,9 @@
#C3 = <core::Type*>[]
#C4 = #test
#C5 = #whenComplete
- #C6 = <dynamic>[]
- #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
- #C8 = #asStream
+ #C6 = <core::Symbol*, dynamic>{)
+ #C7 = #asStream
+ #C8 = <dynamic>[]
#C9 = #timeout
#C10 = #onTimeout
}
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.weak.outline.expect
index e4e19d0..d2c02c7 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.weak.outline.expect
@@ -49,11 +49,11 @@
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_union_downwards_3.dart:10:7 -> SymbolConstant(#test)
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_union_downwards_3.dart:10:7 -> SymbolConstant(#whenComplete)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_union_downwards_3.dart:10:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///future_union_downwards_3.dart:10:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///future_union_downwards_3.dart:10:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_union_downwards_3.dart:10:7 -> SymbolConstant(#asStream)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_union_downwards_3.dart:10:7 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///future_union_downwards_3.dart:10:7 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///future_union_downwards_3.dart:10:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///future_union_downwards_3.dart:10:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_union_downwards_3.dart:10:7 -> SymbolConstant(#timeout)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_union_downwards_3.dart:10:7 -> ListConstant(const <Type*>[])
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_union_downwards_3.dart:10:7 -> SymbolConstant(#onTimeout)
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.weak.transformed.expect
index 0aabd95..b99e170 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.weak.transformed.expect
@@ -33,9 +33,9 @@
no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
}
@@ -106,9 +106,9 @@
#C3 = <core::Type*>[]
#C4 = #test
#C5 = #whenComplete
- #C6 = <dynamic>[]
- #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
- #C8 = #asStream
+ #C6 = <core::Symbol*, dynamic>{)
+ #C7 = #asStream
+ #C8 = <dynamic>[]
#C9 = #timeout
#C10 = #onTimeout
}
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_4.dart.weak.expect b/pkg/front_end/testcases/inference/future_union_downwards_4.dart.weak.expect
index 4ab8890..0691134 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_4.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_4.dart.weak.expect
@@ -26,9 +26,9 @@
no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
}
@@ -49,9 +49,9 @@
#C3 = <core::Type*>[]
#C4 = #test
#C5 = #whenComplete
- #C6 = <dynamic>[]
- #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
- #C8 = #asStream
+ #C6 = <core::Symbol*, dynamic>{)
+ #C7 = #asStream
+ #C8 = <dynamic>[]
#C9 = #timeout
#C10 = #onTimeout
}
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_4.dart.weak.outline.expect b/pkg/front_end/testcases/inference/future_union_downwards_4.dart.weak.outline.expect
index 7a5d3d7..a75836f 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_4.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_4.dart.weak.outline.expect
@@ -49,11 +49,11 @@
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_union_downwards_4.dart:10:7 -> SymbolConstant(#test)
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_union_downwards_4.dart:10:7 -> SymbolConstant(#whenComplete)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_union_downwards_4.dart:10:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///future_union_downwards_4.dart:10:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///future_union_downwards_4.dart:10:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_union_downwards_4.dart:10:7 -> SymbolConstant(#asStream)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_union_downwards_4.dart:10:7 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///future_union_downwards_4.dart:10:7 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///future_union_downwards_4.dart:10:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///future_union_downwards_4.dart:10:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_union_downwards_4.dart:10:7 -> SymbolConstant(#timeout)
Evaluated: ListLiteral @ org-dartlang-testcase:///future_union_downwards_4.dart:10:7 -> ListConstant(const <Type*>[])
Evaluated: SymbolLiteral @ org-dartlang-testcase:///future_union_downwards_4.dart:10:7 -> SymbolConstant(#onTimeout)
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_4.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_union_downwards_4.dart.weak.transformed.expect
index efad60a..35fb5f2 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_4.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_4.dart.weak.transformed.expect
@@ -26,9 +26,9 @@
no-such-method-forwarder method catchError(core::Function* onError, {(core::Object*) →* core::bool* test = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method whenComplete(() →* FutureOr<void>* action) → asy::Future<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
no-such-method-forwarder method asStream() → asy::Stream<self::MyFuture::T*>*
- return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
+ return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, #C8, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Stream<self::MyFuture::T*>*;
no-such-method-forwarder method timeout(core::Duration* timeLimit, {generic-covariant-impl () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
}
@@ -97,9 +97,9 @@
#C3 = <core::Type*>[]
#C4 = #test
#C5 = #whenComplete
- #C6 = <dynamic>[]
- #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
- #C8 = #asStream
+ #C6 = <core::Symbol*, dynamic>{)
+ #C7 = #asStream
+ #C8 = <dynamic>[]
#C9 = #timeout
#C10 = #onTimeout
}
diff --git a/pkg/front_end/testcases/inference_new/const_invocation.dart.weak.expect b/pkg/front_end/testcases/inference_new/const_invocation.dart.weak.expect
index beb0961..388292d 100644
--- a/pkg/front_end/testcases/inference_new/const_invocation.dart.weak.expect
+++ b/pkg/front_end/testcases/inference_new/const_invocation.dart.weak.expect
@@ -20,11 +20,11 @@
get v6() → core::List<(self::Foo::T*) →* self::Foo::T*>*
return #C6;
get v7() → core::Map<self::Foo::T*, self::Foo::T*>*
- return #C8;
+ return #C7;
get v8() → core::Map<(self::Foo::T*) →* self::Foo::T*, self::Foo::T*>*
- return #C9;
+ return #C8;
get v9() → core::Map<self::Foo::T*, (self::Foo::T*) →* self::Foo::T*>*
- return #C10;
+ return #C9;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -60,10 +60,9 @@
#C4 = self::Bar<((Null) →* core::Object*) →* Null> {}
#C5 = <Null>[]
#C6 = <(core::Object*) →* Null>[]
- #C7 = <dynamic>[]
- #C8 = core::_ImmutableMap<Null, Null> {_kvPairs:#C7}
- #C9 = core::_ImmutableMap<(core::Object*) →* Null, Null> {_kvPairs:#C7}
- #C10 = core::_ImmutableMap<Null, (core::Object*) →* Null> {_kvPairs:#C7}
+ #C7 = <Null, Null>{)
+ #C8 = <(core::Object*) →* Null, Null>{)
+ #C9 = <Null, (core::Object*) →* Null>{)
}
diff --git a/pkg/front_end/testcases/inference_new/const_invocation.dart.weak.transformed.expect b/pkg/front_end/testcases/inference_new/const_invocation.dart.weak.transformed.expect
index beb0961..388292d 100644
--- a/pkg/front_end/testcases/inference_new/const_invocation.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/const_invocation.dart.weak.transformed.expect
@@ -20,11 +20,11 @@
get v6() → core::List<(self::Foo::T*) →* self::Foo::T*>*
return #C6;
get v7() → core::Map<self::Foo::T*, self::Foo::T*>*
- return #C8;
+ return #C7;
get v8() → core::Map<(self::Foo::T*) →* self::Foo::T*, self::Foo::T*>*
- return #C9;
+ return #C8;
get v9() → core::Map<self::Foo::T*, (self::Foo::T*) →* self::Foo::T*>*
- return #C10;
+ return #C9;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -60,10 +60,9 @@
#C4 = self::Bar<((Null) →* core::Object*) →* Null> {}
#C5 = <Null>[]
#C6 = <(core::Object*) →* Null>[]
- #C7 = <dynamic>[]
- #C8 = core::_ImmutableMap<Null, Null> {_kvPairs:#C7}
- #C9 = core::_ImmutableMap<(core::Object*) →* Null, Null> {_kvPairs:#C7}
- #C10 = core::_ImmutableMap<Null, (core::Object*) →* Null> {_kvPairs:#C7}
+ #C7 = <Null, Null>{)
+ #C8 = <(core::Object*) →* Null, Null>{)
+ #C9 = <Null, (core::Object*) →* Null>{)
}
diff --git a/pkg/front_end/testcases/late_lowering/issue41436c/issue41436c.dart.strong.expect b/pkg/front_end/testcases/late_lowering/issue41436c/issue41436c.dart.strong.expect
index f4a96a9..de82c1f 100644
--- a/pkg/front_end/testcases/late_lowering/issue41436c/issue41436c.dart.strong.expect
+++ b/pkg/front_end/testcases/late_lowering/issue41436c/issue41436c.dart.strong.expect
@@ -44,6 +44,6 @@
#C1 = #org-dartlang-testcase:///issue41436c.dart::_#A#x
#C2 = <core::Type*>[]
#C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C4 = <core::Symbol*, dynamic>{)
#C5 = #org-dartlang-testcase:///issue41436c.dart::_#A#x=
}
diff --git a/pkg/front_end/testcases/late_lowering/issue41436c/issue41436c.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/issue41436c/issue41436c.dart.strong.transformed.expect
index 2a07753..3487b8a 100644
--- a/pkg/front_end/testcases/late_lowering/issue41436c/issue41436c.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/issue41436c/issue41436c.dart.strong.transformed.expect
@@ -44,6 +44,6 @@
#C1 = #org-dartlang-testcase:///issue41436c.dart::_#A#x
#C2 = <core::Type*>[]
#C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C4 = <core::Symbol*, dynamic>{)
#C5 = #org-dartlang-testcase:///issue41436c.dart::_#A#x=
}
diff --git a/pkg/front_end/testcases/late_lowering/issue41436c/issue41436c.dart.weak.expect b/pkg/front_end/testcases/late_lowering/issue41436c/issue41436c.dart.weak.expect
index 963d836..105770f 100644
--- a/pkg/front_end/testcases/late_lowering/issue41436c/issue41436c.dart.weak.expect
+++ b/pkg/front_end/testcases/late_lowering/issue41436c/issue41436c.dart.weak.expect
@@ -51,7 +51,7 @@
#C1 = #org-dartlang-testcase:///issue41436c.dart::_#A#x#isSet
#C2 = <core::Type*>[]
#C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C4 = <core::Symbol*, dynamic>{)
#C5 = #org-dartlang-testcase:///issue41436c.dart::_#A#x
#C6 = #org-dartlang-testcase:///issue41436c.dart::_#A#x#isSet=
#C7 = #org-dartlang-testcase:///issue41436c.dart::_#A#x=
diff --git a/pkg/front_end/testcases/late_lowering/issue41436c/issue41436c.dart.weak.outline.expect b/pkg/front_end/testcases/late_lowering/issue41436c/issue41436c.dart.weak.outline.expect
index 4f3a9d5..d7ce4ef 100644
--- a/pkg/front_end/testcases/late_lowering/issue41436c/issue41436c.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/late_lowering/issue41436c/issue41436c.dart.weak.outline.expect
@@ -43,15 +43,15 @@
Evaluated: SymbolLiteral @ org-dartlang-testcase:///issue41436c_lib.dart:6:12 -> SymbolConstant(#_#A#x#isSet)
Evaluated: ListLiteral @ org-dartlang-testcase:///issue41436c_lib.dart:6:12 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///issue41436c_lib.dart:6:12 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///issue41436c_lib.dart:6:12 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///issue41436c_lib.dart:6:12 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///issue41436c_lib.dart:6:12 -> SymbolConstant(#_#A#x)
Evaluated: ListLiteral @ org-dartlang-testcase:///issue41436c_lib.dart:6:12 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///issue41436c_lib.dart:6:12 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///issue41436c_lib.dart:6:12 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///issue41436c_lib.dart:6:12 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///issue41436c_lib.dart:6:12 -> SymbolConstant(#_#A#x#isSet=)
Evaluated: ListLiteral @ org-dartlang-testcase:///issue41436c_lib.dart:6:12 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///issue41436c_lib.dart:6:12 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///issue41436c_lib.dart:6:12 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///issue41436c_lib.dart:6:12 -> SymbolConstant(#_#A#x=)
Evaluated: ListLiteral @ org-dartlang-testcase:///issue41436c_lib.dart:6:12 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///issue41436c_lib.dart:6:12 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///issue41436c_lib.dart:6:12 -> MapConstant(const <Symbol*, dynamic>{})
Extra constant evaluation: evaluated: 38, effectively constant: 14
diff --git a/pkg/front_end/testcases/late_lowering/issue41436c/issue41436c.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/issue41436c/issue41436c.dart.weak.transformed.expect
index 3f54bd2..d06c920 100644
--- a/pkg/front_end/testcases/late_lowering/issue41436c/issue41436c.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/issue41436c/issue41436c.dart.weak.transformed.expect
@@ -51,7 +51,7 @@
#C1 = #org-dartlang-testcase:///issue41436c.dart::_#A#x#isSet
#C2 = <core::Type*>[]
#C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C4 = <core::Symbol*, dynamic>{)
#C5 = #org-dartlang-testcase:///issue41436c.dart::_#A#x
#C6 = #org-dartlang-testcase:///issue41436c.dart::_#A#x#isSet=
#C7 = #org-dartlang-testcase:///issue41436c.dart::_#A#x=
diff --git a/pkg/front_end/testcases/nnbd/constants.dart.strong.expect b/pkg/front_end/testcases/nnbd/constants.dart.strong.expect
index 70ed240..5ea885d 100644
--- a/pkg/front_end/testcases/nnbd/constants.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/constants.dart.strong.expect
@@ -13,22 +13,22 @@
static const field core::Type functionTypeLiteral = #C6;
static const field core::Type genericFunctionTypeLiteral = #C7;
static const field core::List<core::int> listLiteral = #C8;
-static const field core::Set<core::int> setLiteral = #C12;
-static const field core::Map<core::int, core::String> mapLiteral = #C15;
+static const field core::Set<core::int> setLiteral = #C9;
+static const field core::Map<core::int, core::String> mapLiteral = #C11;
static const field core::List<core::int> listConcatenation = #C8;
-static const field core::Set<core::int> setConcatenation = #C12;
-static const field core::Map<core::int, core::String> mapConcatenation = #C15;
-static const field core::bool objectTypeLiteralIdentical = #C16;
-static const field core::bool partialInstantiationIdentical = #C16;
-static const field core::bool instanceIdentical = #C16;
-static const field core::bool functionTypeLiteralIdentical = #C16;
-static const field core::bool genericFunctionTypeLiteralIdentical = #C16;
-static const field core::bool listLiteralIdentical = #C16;
-static const field core::bool setLiteralIdentical = #C16;
-static const field core::bool mapLiteralIdentical = #C16;
-static const field core::bool listConcatenationIdentical = #C16;
-static const field core::bool setConcatenationIdentical = #C16;
-static const field core::bool mapConcatenationIdentical = #C16;
+static const field core::Set<core::int> setConcatenation = #C9;
+static const field core::Map<core::int, core::String> mapConcatenation = #C11;
+static const field core::bool objectTypeLiteralIdentical = #C12;
+static const field core::bool partialInstantiationIdentical = #C12;
+static const field core::bool instanceIdentical = #C12;
+static const field core::bool functionTypeLiteralIdentical = #C12;
+static const field core::bool genericFunctionTypeLiteralIdentical = #C12;
+static const field core::bool listLiteralIdentical = #C12;
+static const field core::bool setLiteralIdentical = #C12;
+static const field core::bool mapLiteralIdentical = #C12;
+static const field core::bool listConcatenationIdentical = #C12;
+static const field core::bool setConcatenationIdentical = #C12;
+static const field core::bool mapConcatenationIdentical = #C12;
static method main() → dynamic {
self::test(#C1, #C1);
self::test(#C3, #C3);
@@ -36,22 +36,22 @@
self::test(#C6, #C6);
self::test(#C7, #C7);
self::test(#C8, #C8);
- self::test(#C12, #C12);
- self::test(#C15, #C15);
+ self::test(#C9, #C9);
+ self::test(#C11, #C11);
self::test(#C8, #C8);
- self::test(#C12, #C12);
- self::test(#C15, #C15);
- self::test(true, #C16);
- self::test(true, #C16);
- self::test(true, #C16);
- self::test(true, #C16);
- self::test(true, #C16);
- self::test(true, #C16);
- self::test(true, #C16);
- self::test(true, #C16);
- self::test(true, #C16);
- self::test(true, #C16);
- self::test(true, #C16);
+ self::test(#C9, #C9);
+ self::test(#C11, #C11);
+ self::test(true, #C12);
+ self::test(true, #C12);
+ self::test(true, #C12);
+ self::test(true, #C12);
+ self::test(true, #C12);
+ self::test(true, #C12);
+ self::test(true, #C12);
+ self::test(true, #C12);
+ self::test(true, #C12);
+ self::test(true, #C12);
+ self::test(true, #C12);
}
static method test(dynamic expected, dynamic actual) → dynamic {
core::print("test(${expected}, ${actual})");
@@ -73,17 +73,17 @@
;
}
static const field core::Type objectTypeLiteral = #C1;
-static const field (core::Object?, core::Object?) → core::bool c2 = #C17;
+static const field (core::Object?, core::Object?) → core::bool c2 = #C13;
static const field (core::int) → core::int partialInstantiation = #C3;
static const field con::Class<core::int> instance = #C5;
static const field core::Type functionTypeLiteral = #C6;
static const field core::Type genericFunctionTypeLiteral = #C7;
static const field core::List<core::int> listLiteral = #C8;
-static const field core::Set<core::int> setLiteral = #C12;
-static const field core::Map<core::int, core::String> mapLiteral = #C15;
+static const field core::Set<core::int> setLiteral = #C9;
+static const field core::Map<core::int, core::String> mapLiteral = #C11;
static const field core::List<core::int> listConcatenation = #C8;
-static const field core::Set<core::int> setConcatenation = #C12;
-static const field core::Map<core::int, core::String> mapConcatenation = #C15;
+static const field core::Set<core::int> setConcatenation = #C9;
+static const field core::Map<core::int, core::String> mapConcatenation = #C11;
static method id<T extends core::Object? = dynamic>(con::id::T% t) → con::id::T%
return t;
@@ -96,15 +96,11 @@
#C6 = TypeLiteralConstant((dynamic) → dynamic)
#C7 = TypeLiteralConstant(<T extends core::Object? = dynamic>(T%) → T%)
#C8 = <core::int>[#C4]
- #C9 = null
- #C10 = <dynamic>[#C4, #C9]
- #C11 = core::_ImmutableMap<core::int, Null> {_kvPairs:#C10}
- #C12 = col::_UnmodifiableSet<core::int> {_map:#C11}
- #C13 = "foo"
- #C14 = <dynamic>[#C4, #C13]
- #C15 = core::_ImmutableMap<core::int, core::String> {_kvPairs:#C14}
- #C16 = true
- #C17 = static-tearoff core::identical
+ #C9 = <core::int>{#C4}
+ #C10 = "foo"
+ #C11 = <core::int, core::String>{#C4:#C10)
+ #C12 = true
+ #C13 = static-tearoff core::identical
}
diff --git a/pkg/front_end/testcases/nnbd/constants.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/constants.dart.strong.transformed.expect
index 70ed240..5ea885d 100644
--- a/pkg/front_end/testcases/nnbd/constants.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/constants.dart.strong.transformed.expect
@@ -13,22 +13,22 @@
static const field core::Type functionTypeLiteral = #C6;
static const field core::Type genericFunctionTypeLiteral = #C7;
static const field core::List<core::int> listLiteral = #C8;
-static const field core::Set<core::int> setLiteral = #C12;
-static const field core::Map<core::int, core::String> mapLiteral = #C15;
+static const field core::Set<core::int> setLiteral = #C9;
+static const field core::Map<core::int, core::String> mapLiteral = #C11;
static const field core::List<core::int> listConcatenation = #C8;
-static const field core::Set<core::int> setConcatenation = #C12;
-static const field core::Map<core::int, core::String> mapConcatenation = #C15;
-static const field core::bool objectTypeLiteralIdentical = #C16;
-static const field core::bool partialInstantiationIdentical = #C16;
-static const field core::bool instanceIdentical = #C16;
-static const field core::bool functionTypeLiteralIdentical = #C16;
-static const field core::bool genericFunctionTypeLiteralIdentical = #C16;
-static const field core::bool listLiteralIdentical = #C16;
-static const field core::bool setLiteralIdentical = #C16;
-static const field core::bool mapLiteralIdentical = #C16;
-static const field core::bool listConcatenationIdentical = #C16;
-static const field core::bool setConcatenationIdentical = #C16;
-static const field core::bool mapConcatenationIdentical = #C16;
+static const field core::Set<core::int> setConcatenation = #C9;
+static const field core::Map<core::int, core::String> mapConcatenation = #C11;
+static const field core::bool objectTypeLiteralIdentical = #C12;
+static const field core::bool partialInstantiationIdentical = #C12;
+static const field core::bool instanceIdentical = #C12;
+static const field core::bool functionTypeLiteralIdentical = #C12;
+static const field core::bool genericFunctionTypeLiteralIdentical = #C12;
+static const field core::bool listLiteralIdentical = #C12;
+static const field core::bool setLiteralIdentical = #C12;
+static const field core::bool mapLiteralIdentical = #C12;
+static const field core::bool listConcatenationIdentical = #C12;
+static const field core::bool setConcatenationIdentical = #C12;
+static const field core::bool mapConcatenationIdentical = #C12;
static method main() → dynamic {
self::test(#C1, #C1);
self::test(#C3, #C3);
@@ -36,22 +36,22 @@
self::test(#C6, #C6);
self::test(#C7, #C7);
self::test(#C8, #C8);
- self::test(#C12, #C12);
- self::test(#C15, #C15);
+ self::test(#C9, #C9);
+ self::test(#C11, #C11);
self::test(#C8, #C8);
- self::test(#C12, #C12);
- self::test(#C15, #C15);
- self::test(true, #C16);
- self::test(true, #C16);
- self::test(true, #C16);
- self::test(true, #C16);
- self::test(true, #C16);
- self::test(true, #C16);
- self::test(true, #C16);
- self::test(true, #C16);
- self::test(true, #C16);
- self::test(true, #C16);
- self::test(true, #C16);
+ self::test(#C9, #C9);
+ self::test(#C11, #C11);
+ self::test(true, #C12);
+ self::test(true, #C12);
+ self::test(true, #C12);
+ self::test(true, #C12);
+ self::test(true, #C12);
+ self::test(true, #C12);
+ self::test(true, #C12);
+ self::test(true, #C12);
+ self::test(true, #C12);
+ self::test(true, #C12);
+ self::test(true, #C12);
}
static method test(dynamic expected, dynamic actual) → dynamic {
core::print("test(${expected}, ${actual})");
@@ -73,17 +73,17 @@
;
}
static const field core::Type objectTypeLiteral = #C1;
-static const field (core::Object?, core::Object?) → core::bool c2 = #C17;
+static const field (core::Object?, core::Object?) → core::bool c2 = #C13;
static const field (core::int) → core::int partialInstantiation = #C3;
static const field con::Class<core::int> instance = #C5;
static const field core::Type functionTypeLiteral = #C6;
static const field core::Type genericFunctionTypeLiteral = #C7;
static const field core::List<core::int> listLiteral = #C8;
-static const field core::Set<core::int> setLiteral = #C12;
-static const field core::Map<core::int, core::String> mapLiteral = #C15;
+static const field core::Set<core::int> setLiteral = #C9;
+static const field core::Map<core::int, core::String> mapLiteral = #C11;
static const field core::List<core::int> listConcatenation = #C8;
-static const field core::Set<core::int> setConcatenation = #C12;
-static const field core::Map<core::int, core::String> mapConcatenation = #C15;
+static const field core::Set<core::int> setConcatenation = #C9;
+static const field core::Map<core::int, core::String> mapConcatenation = #C11;
static method id<T extends core::Object? = dynamic>(con::id::T% t) → con::id::T%
return t;
@@ -96,15 +96,11 @@
#C6 = TypeLiteralConstant((dynamic) → dynamic)
#C7 = TypeLiteralConstant(<T extends core::Object? = dynamic>(T%) → T%)
#C8 = <core::int>[#C4]
- #C9 = null
- #C10 = <dynamic>[#C4, #C9]
- #C11 = core::_ImmutableMap<core::int, Null> {_kvPairs:#C10}
- #C12 = col::_UnmodifiableSet<core::int> {_map:#C11}
- #C13 = "foo"
- #C14 = <dynamic>[#C4, #C13]
- #C15 = core::_ImmutableMap<core::int, core::String> {_kvPairs:#C14}
- #C16 = true
- #C17 = static-tearoff core::identical
+ #C9 = <core::int>{#C4}
+ #C10 = "foo"
+ #C11 = <core::int, core::String>{#C4:#C10)
+ #C12 = true
+ #C13 = static-tearoff core::identical
}
diff --git a/pkg/front_end/testcases/nnbd/constants.dart.weak.expect b/pkg/front_end/testcases/nnbd/constants.dart.weak.expect
index b26ca6d..17a63c7 100644
--- a/pkg/front_end/testcases/nnbd/constants.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/constants.dart.weak.expect
@@ -13,22 +13,22 @@
static const field core::Type functionTypeLiteral = #C6;
static const field core::Type genericFunctionTypeLiteral = #C7;
static const field core::List<core::int> listLiteral = #C8;
-static const field core::Set<core::int> setLiteral = #C12;
-static const field core::Map<core::int, core::String> mapLiteral = #C15;
+static const field core::Set<core::int> setLiteral = #C9;
+static const field core::Map<core::int, core::String> mapLiteral = #C11;
static const field core::List<core::int> listConcatenation = #C8;
-static const field core::Set<core::int> setConcatenation = #C12;
-static const field core::Map<core::int, core::String> mapConcatenation = #C15;
-static const field core::bool objectTypeLiteralIdentical = #C16;
-static const field core::bool partialInstantiationIdentical = #C16;
-static const field core::bool instanceIdentical = #C16;
-static const field core::bool functionTypeLiteralIdentical = #C16;
-static const field core::bool genericFunctionTypeLiteralIdentical = #C16;
-static const field core::bool listLiteralIdentical = #C16;
-static const field core::bool setLiteralIdentical = #C16;
-static const field core::bool mapLiteralIdentical = #C16;
-static const field core::bool listConcatenationIdentical = #C16;
-static const field core::bool setConcatenationIdentical = #C16;
-static const field core::bool mapConcatenationIdentical = #C16;
+static const field core::Set<core::int> setConcatenation = #C9;
+static const field core::Map<core::int, core::String> mapConcatenation = #C11;
+static const field core::bool objectTypeLiteralIdentical = #C12;
+static const field core::bool partialInstantiationIdentical = #C12;
+static const field core::bool instanceIdentical = #C12;
+static const field core::bool functionTypeLiteralIdentical = #C12;
+static const field core::bool genericFunctionTypeLiteralIdentical = #C12;
+static const field core::bool listLiteralIdentical = #C12;
+static const field core::bool setLiteralIdentical = #C12;
+static const field core::bool mapLiteralIdentical = #C12;
+static const field core::bool listConcatenationIdentical = #C12;
+static const field core::bool setConcatenationIdentical = #C12;
+static const field core::bool mapConcatenationIdentical = #C12;
static method main() → dynamic {
self::test(#C1, #C1);
self::test(#C3, #C3);
@@ -36,22 +36,22 @@
self::test(#C6, #C6);
self::test(#C7, #C7);
self::test(#C8, #C8);
- self::test(#C12, #C12);
- self::test(#C15, #C15);
+ self::test(#C9, #C9);
+ self::test(#C11, #C11);
self::test(#C8, #C8);
- self::test(#C12, #C12);
- self::test(#C15, #C15);
- self::test(true, #C16);
- self::test(true, #C16);
- self::test(true, #C16);
- self::test(true, #C16);
- self::test(true, #C16);
- self::test(true, #C16);
- self::test(true, #C16);
- self::test(true, #C16);
- self::test(true, #C16);
- self::test(true, #C16);
- self::test(true, #C16);
+ self::test(#C9, #C9);
+ self::test(#C11, #C11);
+ self::test(true, #C12);
+ self::test(true, #C12);
+ self::test(true, #C12);
+ self::test(true, #C12);
+ self::test(true, #C12);
+ self::test(true, #C12);
+ self::test(true, #C12);
+ self::test(true, #C12);
+ self::test(true, #C12);
+ self::test(true, #C12);
+ self::test(true, #C12);
}
static method test(dynamic expected, dynamic actual) → dynamic {
core::print("test(${expected}, ${actual})");
@@ -73,17 +73,17 @@
;
}
static const field core::Type objectTypeLiteral = #C1;
-static const field (core::Object?, core::Object?) → core::bool c2 = #C17;
+static const field (core::Object?, core::Object?) → core::bool c2 = #C13;
static const field (core::int) → core::int partialInstantiation = #C3;
static const field con::Class<core::int> instance = #C5;
static const field core::Type functionTypeLiteral = #C6;
static const field core::Type genericFunctionTypeLiteral = #C7;
static const field core::List<core::int> listLiteral = #C8;
-static const field core::Set<core::int> setLiteral = #C12;
-static const field core::Map<core::int, core::String> mapLiteral = #C15;
+static const field core::Set<core::int> setLiteral = #C9;
+static const field core::Map<core::int, core::String> mapLiteral = #C11;
static const field core::List<core::int> listConcatenation = #C8;
-static const field core::Set<core::int> setConcatenation = #C12;
-static const field core::Map<core::int, core::String> mapConcatenation = #C15;
+static const field core::Set<core::int> setConcatenation = #C9;
+static const field core::Map<core::int, core::String> mapConcatenation = #C11;
static method id<T extends core::Object? = dynamic>(con::id::T% t) → con::id::T%
return t;
@@ -96,15 +96,11 @@
#C6 = TypeLiteralConstant((dynamic) →* dynamic)
#C7 = TypeLiteralConstant(<T extends core::Object? = dynamic>(T*) →* T*)
#C8 = <core::int*>[#C4]
- #C9 = null
- #C10 = <dynamic>[#C4, #C9]
- #C11 = core::_ImmutableMap<core::int*, Null> {_kvPairs:#C10}
- #C12 = col::_UnmodifiableSet<core::int*> {_map:#C11}
- #C13 = "foo"
- #C14 = <dynamic>[#C4, #C13]
- #C15 = core::_ImmutableMap<core::int*, core::String*> {_kvPairs:#C14}
- #C16 = true
- #C17 = static-tearoff core::identical
+ #C9 = <core::int*>{#C4}
+ #C10 = "foo"
+ #C11 = <core::int*, core::String*>{#C4:#C10)
+ #C12 = true
+ #C13 = static-tearoff core::identical
}
diff --git a/pkg/front_end/testcases/nnbd/constants.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd/constants.dart.weak.outline.expect
index 1d425f6..5c642d9 100644
--- a/pkg/front_end/testcases/nnbd/constants.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd/constants.dart.weak.outline.expect
@@ -69,11 +69,11 @@
Evaluated: TypeLiteral @ org-dartlang-testcase:///constants.dart:13:29 -> TypeLiteralConstant(dynamic Function(dynamic)*)
Evaluated: TypeLiteral @ org-dartlang-testcase:///constants.dart:14:36 -> TypeLiteralConstant(T* Function<T>(T*)*)
Evaluated: ListLiteral @ org-dartlang-testcase:///constants.dart:15:26 -> ListConstant(const <int*>[0])
-Evaluated: SetLiteral @ org-dartlang-testcase:///constants.dart:16:25 -> InstanceConstant(const _UnmodifiableSet<int*>{_UnmodifiableSet._map: const _ImmutableMap<int*, Null>{_ImmutableMap._kvPairs: const <dynamic>[0, null]}})
-Evaluated: MapLiteral @ org-dartlang-testcase:///constants.dart:17:33 -> InstanceConstant(const _ImmutableMap<int*, String*>{_ImmutableMap._kvPairs: const <dynamic>[0, "foo"]})
+Evaluated: SetLiteral @ org-dartlang-testcase:///constants.dart:16:25 -> SetConstant(const <int*>{0})
+Evaluated: MapLiteral @ org-dartlang-testcase:///constants.dart:17:33 -> MapConstant(const <int*, String*>{0: "foo"})
Evaluated: ListConcatenation @ org-dartlang-testcase:///constants.dart:18:32 -> ListConstant(const <int*>[0])
-Evaluated: SetConcatenation @ org-dartlang-testcase:///constants.dart:19:31 -> InstanceConstant(const _UnmodifiableSet<int*>{_UnmodifiableSet._map: const _ImmutableMap<int*, Null>{_ImmutableMap._kvPairs: const <dynamic>[0, null]}})
-Evaluated: MapConcatenation @ org-dartlang-testcase:///constants.dart:20:7 -> InstanceConstant(const _ImmutableMap<int*, String*>{_ImmutableMap._kvPairs: const <dynamic>[0, "foo"]})
+Evaluated: SetConcatenation @ org-dartlang-testcase:///constants.dart:19:31 -> SetConstant(const <int*>{0})
+Evaluated: MapConcatenation @ org-dartlang-testcase:///constants.dart:20:7 -> MapConstant(const <int*, String*>{0: "foo"})
Evaluated: StaticInvocation @ org-dartlang-testcase:///constants.dart:23:5 -> BoolConstant(true)
Evaluated: StaticInvocation @ org-dartlang-testcase:///constants.dart:25:5 -> BoolConstant(true)
Evaluated: StaticInvocation @ org-dartlang-testcase:///constants.dart:26:27 -> BoolConstant(true)
@@ -92,9 +92,9 @@
Evaluated: TypeLiteral @ org-dartlang-testcase:///constants_lib.dart:20:29 -> TypeLiteralConstant(dynamic Function(dynamic)*)
Evaluated: TypeLiteral @ org-dartlang-testcase:///constants_lib.dart:21:36 -> TypeLiteralConstant(T* Function<T>(T*)*)
Evaluated: ListLiteral @ org-dartlang-testcase:///constants_lib.dart:22:26 -> ListConstant(const <int*>[0])
-Evaluated: SetLiteral @ org-dartlang-testcase:///constants_lib.dart:23:25 -> InstanceConstant(const _UnmodifiableSet<int*>{_UnmodifiableSet._map: const _ImmutableMap<int*, Null>{_ImmutableMap._kvPairs: const <dynamic>[0, null]}})
-Evaluated: MapLiteral @ org-dartlang-testcase:///constants_lib.dart:24:33 -> InstanceConstant(const _ImmutableMap<int*, String*>{_ImmutableMap._kvPairs: const <dynamic>[0, "foo"]})
+Evaluated: SetLiteral @ org-dartlang-testcase:///constants_lib.dart:23:25 -> SetConstant(const <int*>{0})
+Evaluated: MapLiteral @ org-dartlang-testcase:///constants_lib.dart:24:33 -> MapConstant(const <int*, String*>{0: "foo"})
Evaluated: ListConcatenation @ org-dartlang-testcase:///constants_lib.dart:25:32 -> ListConstant(const <int*>[0])
-Evaluated: SetConcatenation @ org-dartlang-testcase:///constants_lib.dart:26:31 -> InstanceConstant(const _UnmodifiableSet<int*>{_UnmodifiableSet._map: const _ImmutableMap<int*, Null>{_ImmutableMap._kvPairs: const <dynamic>[0, null]}})
-Evaluated: MapConcatenation @ org-dartlang-testcase:///constants_lib.dart:27:7 -> InstanceConstant(const _ImmutableMap<int*, String*>{_ImmutableMap._kvPairs: const <dynamic>[0, "foo"]})
+Evaluated: SetConcatenation @ org-dartlang-testcase:///constants_lib.dart:26:31 -> SetConstant(const <int*>{0})
+Evaluated: MapConcatenation @ org-dartlang-testcase:///constants_lib.dart:27:7 -> MapConstant(const <int*, String*>{0: "foo"})
Extra constant evaluation: evaluated: 35, effectively constant: 34
diff --git a/pkg/front_end/testcases/nnbd/constants.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/constants.dart.weak.transformed.expect
index b26ca6d..17a63c7 100644
--- a/pkg/front_end/testcases/nnbd/constants.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/constants.dart.weak.transformed.expect
@@ -13,22 +13,22 @@
static const field core::Type functionTypeLiteral = #C6;
static const field core::Type genericFunctionTypeLiteral = #C7;
static const field core::List<core::int> listLiteral = #C8;
-static const field core::Set<core::int> setLiteral = #C12;
-static const field core::Map<core::int, core::String> mapLiteral = #C15;
+static const field core::Set<core::int> setLiteral = #C9;
+static const field core::Map<core::int, core::String> mapLiteral = #C11;
static const field core::List<core::int> listConcatenation = #C8;
-static const field core::Set<core::int> setConcatenation = #C12;
-static const field core::Map<core::int, core::String> mapConcatenation = #C15;
-static const field core::bool objectTypeLiteralIdentical = #C16;
-static const field core::bool partialInstantiationIdentical = #C16;
-static const field core::bool instanceIdentical = #C16;
-static const field core::bool functionTypeLiteralIdentical = #C16;
-static const field core::bool genericFunctionTypeLiteralIdentical = #C16;
-static const field core::bool listLiteralIdentical = #C16;
-static const field core::bool setLiteralIdentical = #C16;
-static const field core::bool mapLiteralIdentical = #C16;
-static const field core::bool listConcatenationIdentical = #C16;
-static const field core::bool setConcatenationIdentical = #C16;
-static const field core::bool mapConcatenationIdentical = #C16;
+static const field core::Set<core::int> setConcatenation = #C9;
+static const field core::Map<core::int, core::String> mapConcatenation = #C11;
+static const field core::bool objectTypeLiteralIdentical = #C12;
+static const field core::bool partialInstantiationIdentical = #C12;
+static const field core::bool instanceIdentical = #C12;
+static const field core::bool functionTypeLiteralIdentical = #C12;
+static const field core::bool genericFunctionTypeLiteralIdentical = #C12;
+static const field core::bool listLiteralIdentical = #C12;
+static const field core::bool setLiteralIdentical = #C12;
+static const field core::bool mapLiteralIdentical = #C12;
+static const field core::bool listConcatenationIdentical = #C12;
+static const field core::bool setConcatenationIdentical = #C12;
+static const field core::bool mapConcatenationIdentical = #C12;
static method main() → dynamic {
self::test(#C1, #C1);
self::test(#C3, #C3);
@@ -36,22 +36,22 @@
self::test(#C6, #C6);
self::test(#C7, #C7);
self::test(#C8, #C8);
- self::test(#C12, #C12);
- self::test(#C15, #C15);
+ self::test(#C9, #C9);
+ self::test(#C11, #C11);
self::test(#C8, #C8);
- self::test(#C12, #C12);
- self::test(#C15, #C15);
- self::test(true, #C16);
- self::test(true, #C16);
- self::test(true, #C16);
- self::test(true, #C16);
- self::test(true, #C16);
- self::test(true, #C16);
- self::test(true, #C16);
- self::test(true, #C16);
- self::test(true, #C16);
- self::test(true, #C16);
- self::test(true, #C16);
+ self::test(#C9, #C9);
+ self::test(#C11, #C11);
+ self::test(true, #C12);
+ self::test(true, #C12);
+ self::test(true, #C12);
+ self::test(true, #C12);
+ self::test(true, #C12);
+ self::test(true, #C12);
+ self::test(true, #C12);
+ self::test(true, #C12);
+ self::test(true, #C12);
+ self::test(true, #C12);
+ self::test(true, #C12);
}
static method test(dynamic expected, dynamic actual) → dynamic {
core::print("test(${expected}, ${actual})");
@@ -73,17 +73,17 @@
;
}
static const field core::Type objectTypeLiteral = #C1;
-static const field (core::Object?, core::Object?) → core::bool c2 = #C17;
+static const field (core::Object?, core::Object?) → core::bool c2 = #C13;
static const field (core::int) → core::int partialInstantiation = #C3;
static const field con::Class<core::int> instance = #C5;
static const field core::Type functionTypeLiteral = #C6;
static const field core::Type genericFunctionTypeLiteral = #C7;
static const field core::List<core::int> listLiteral = #C8;
-static const field core::Set<core::int> setLiteral = #C12;
-static const field core::Map<core::int, core::String> mapLiteral = #C15;
+static const field core::Set<core::int> setLiteral = #C9;
+static const field core::Map<core::int, core::String> mapLiteral = #C11;
static const field core::List<core::int> listConcatenation = #C8;
-static const field core::Set<core::int> setConcatenation = #C12;
-static const field core::Map<core::int, core::String> mapConcatenation = #C15;
+static const field core::Set<core::int> setConcatenation = #C9;
+static const field core::Map<core::int, core::String> mapConcatenation = #C11;
static method id<T extends core::Object? = dynamic>(con::id::T% t) → con::id::T%
return t;
@@ -96,15 +96,11 @@
#C6 = TypeLiteralConstant((dynamic) →* dynamic)
#C7 = TypeLiteralConstant(<T extends core::Object? = dynamic>(T*) →* T*)
#C8 = <core::int*>[#C4]
- #C9 = null
- #C10 = <dynamic>[#C4, #C9]
- #C11 = core::_ImmutableMap<core::int*, Null> {_kvPairs:#C10}
- #C12 = col::_UnmodifiableSet<core::int*> {_map:#C11}
- #C13 = "foo"
- #C14 = <dynamic>[#C4, #C13]
- #C15 = core::_ImmutableMap<core::int*, core::String*> {_kvPairs:#C14}
- #C16 = true
- #C17 = static-tearoff core::identical
+ #C9 = <core::int*>{#C4}
+ #C10 = "foo"
+ #C11 = <core::int*, core::String*>{#C4:#C10)
+ #C12 = true
+ #C13 = static-tearoff core::identical
}
diff --git a/pkg/front_end/testcases/nnbd/from_agnostic/from_agnostic.dart.strong.expect b/pkg/front_end/testcases/nnbd/from_agnostic/from_agnostic.dart.strong.expect
index e114f63..ffeac59 100644
--- a/pkg/front_end/testcases/nnbd/from_agnostic/from_agnostic.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/from_agnostic/from_agnostic.dart.strong.expect
@@ -5,8 +5,8 @@
import "org-dartlang-testcase:///from_agnostic_lib.dart";
static const field core::bool c1 = #C1;
-static const field core::Map<core::List<core::int?>, core::int> c2 = #C7;
-static const field core::Set<core::List<core::int?>> c3 = #C11;
+static const field core::Map<core::List<core::int?>, core::int> c2 = #C6;
+static const field core::Set<core::List<core::int?>> c3 = #C7;
static const field core::List<core::int> c4 = #C2;
static const field core::List<core::int?> c5 = #C4;
static method main() → dynamic {
@@ -27,10 +27,6 @@
#C3 = 0
#C4 = <core::int?>[]
#C5 = 1
- #C6 = <dynamic>[#C2, #C3, #C4, #C5]
- #C7 = core::_ImmutableMap<core::List<core::int?>, core::int> {_kvPairs:#C6}
- #C8 = null
- #C9 = <dynamic>[#C2, #C8, #C4, #C8]
- #C10 = core::_ImmutableMap<core::List<core::int?>, Null> {_kvPairs:#C9}
- #C11 = col::_UnmodifiableSet<core::List<core::int?>> {_map:#C10}
+ #C6 = <core::List<core::int?>, core::int>{#C2:#C3, #C4:#C5)
+ #C7 = <core::List<core::int?>>{#C2, #C4}
}
diff --git a/pkg/front_end/testcases/nnbd/from_agnostic/from_agnostic.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/from_agnostic/from_agnostic.dart.strong.transformed.expect
index e114f63..ffeac59 100644
--- a/pkg/front_end/testcases/nnbd/from_agnostic/from_agnostic.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/from_agnostic/from_agnostic.dart.strong.transformed.expect
@@ -5,8 +5,8 @@
import "org-dartlang-testcase:///from_agnostic_lib.dart";
static const field core::bool c1 = #C1;
-static const field core::Map<core::List<core::int?>, core::int> c2 = #C7;
-static const field core::Set<core::List<core::int?>> c3 = #C11;
+static const field core::Map<core::List<core::int?>, core::int> c2 = #C6;
+static const field core::Set<core::List<core::int?>> c3 = #C7;
static const field core::List<core::int> c4 = #C2;
static const field core::List<core::int?> c5 = #C4;
static method main() → dynamic {
@@ -27,10 +27,6 @@
#C3 = 0
#C4 = <core::int?>[]
#C5 = 1
- #C6 = <dynamic>[#C2, #C3, #C4, #C5]
- #C7 = core::_ImmutableMap<core::List<core::int?>, core::int> {_kvPairs:#C6}
- #C8 = null
- #C9 = <dynamic>[#C2, #C8, #C4, #C8]
- #C10 = core::_ImmutableMap<core::List<core::int?>, Null> {_kvPairs:#C9}
- #C11 = col::_UnmodifiableSet<core::List<core::int?>> {_map:#C10}
+ #C6 = <core::List<core::int?>, core::int>{#C2:#C3, #C4:#C5)
+ #C7 = <core::List<core::int?>>{#C2, #C4}
}
diff --git a/pkg/front_end/testcases/nnbd/from_agnostic/from_agnostic.dart.weak.expect b/pkg/front_end/testcases/nnbd/from_agnostic/from_agnostic.dart.weak.expect
index f526302..0c2cc88 100644
--- a/pkg/front_end/testcases/nnbd/from_agnostic/from_agnostic.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/from_agnostic/from_agnostic.dart.weak.expect
@@ -5,8 +5,8 @@
import "org-dartlang-testcase:///from_agnostic_lib.dart";
static const field core::bool c1 = #C1;
-static const field core::Map<core::List<core::int?>, core::int> c2 = #C7;
-static const field core::Set<core::List<core::int?>> c3 = #C11;
+static const field core::Map<core::List<core::int?>, core::int> c2 = #C6;
+static const field core::Set<core::List<core::int?>> c3 = #C7;
static const field core::List<core::int> c4 = #C2;
static const field core::List<core::int?> c5 = #C4;
static method main() → dynamic {
@@ -18,7 +18,7 @@
import self as self2;
import "dart:core" as core;
-static const field core::List<core::int> a = #C12;
+static const field core::List<core::int> a = #C8;
static const field core::List<core::int?> b = #C4;
constants {
@@ -27,11 +27,7 @@
#C3 = 0
#C4 = <core::int?>[]
#C5 = 1
- #C6 = <dynamic>[#C2, #C3, #C4, #C5]
- #C7 = core::_ImmutableMap<core::List<core::int?>*, core::int*> {_kvPairs:#C6}
- #C8 = null
- #C9 = <dynamic>[#C2, #C8, #C4, #C8]
- #C10 = core::_ImmutableMap<core::List<core::int?>*, Null> {_kvPairs:#C9}
- #C11 = col::_UnmodifiableSet<core::List<core::int?>*> {_map:#C10}
- #C12 = <core::int>[]
+ #C6 = <core::List<core::int?>*, core::int*>{#C2:#C3, #C4:#C5)
+ #C7 = <core::List<core::int?>*>{#C2, #C4}
+ #C8 = <core::int>[]
}
diff --git a/pkg/front_end/testcases/nnbd/from_agnostic/from_agnostic.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd/from_agnostic/from_agnostic.dart.weak.outline.expect
index afae808..6d9444e 100644
--- a/pkg/front_end/testcases/nnbd/from_agnostic/from_agnostic.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd/from_agnostic/from_agnostic.dart.weak.outline.expect
@@ -27,8 +27,8 @@
Extra constant evaluation status:
Evaluated: StaticInvocation @ org-dartlang-testcase:///from_agnostic.dart:7:12 -> BoolConstant(false)
-Evaluated: MapLiteral @ org-dartlang-testcase:///from_agnostic.dart:8:12 -> InstanceConstant(const _ImmutableMap<List<int?>*, int*>{_ImmutableMap._kvPairs: const <dynamic>[const <int*>[], 0, const <int?>[], 1]})
-Evaluated: SetLiteral @ org-dartlang-testcase:///from_agnostic.dart:9:12 -> InstanceConstant(const _UnmodifiableSet<List<int?>*>{_UnmodifiableSet._map: const _ImmutableMap<List<int?>*, Null>{_ImmutableMap._kvPairs: const <dynamic>[const <int*>[], null, const <int?>[], null]}})
+Evaluated: MapLiteral @ org-dartlang-testcase:///from_agnostic.dart:8:12 -> MapConstant(const <List<int?>*, int*>{const <int*>[]: 0, const <int?>[]: 1})
+Evaluated: SetLiteral @ org-dartlang-testcase:///from_agnostic.dart:9:12 -> SetConstant(const <List<int?>*>{const <int*>[], const <int?>[]})
Evaluated: StaticGet @ org-dartlang-testcase:///from_agnostic.dart:10:12 -> ListConstant(const <int*>[])
Evaluated: StaticGet @ org-dartlang-testcase:///from_agnostic.dart:11:12 -> ListConstant(const <int?>[])
Extra constant evaluation: evaluated: 5, effectively constant: 5
diff --git a/pkg/front_end/testcases/nnbd/from_agnostic/from_agnostic.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/from_agnostic/from_agnostic.dart.weak.transformed.expect
index f526302..0c2cc88 100644
--- a/pkg/front_end/testcases/nnbd/from_agnostic/from_agnostic.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/from_agnostic/from_agnostic.dart.weak.transformed.expect
@@ -5,8 +5,8 @@
import "org-dartlang-testcase:///from_agnostic_lib.dart";
static const field core::bool c1 = #C1;
-static const field core::Map<core::List<core::int?>, core::int> c2 = #C7;
-static const field core::Set<core::List<core::int?>> c3 = #C11;
+static const field core::Map<core::List<core::int?>, core::int> c2 = #C6;
+static const field core::Set<core::List<core::int?>> c3 = #C7;
static const field core::List<core::int> c4 = #C2;
static const field core::List<core::int?> c5 = #C4;
static method main() → dynamic {
@@ -18,7 +18,7 @@
import self as self2;
import "dart:core" as core;
-static const field core::List<core::int> a = #C12;
+static const field core::List<core::int> a = #C8;
static const field core::List<core::int?> b = #C4;
constants {
@@ -27,11 +27,7 @@
#C3 = 0
#C4 = <core::int?>[]
#C5 = 1
- #C6 = <dynamic>[#C2, #C3, #C4, #C5]
- #C7 = core::_ImmutableMap<core::List<core::int?>*, core::int*> {_kvPairs:#C6}
- #C8 = null
- #C9 = <dynamic>[#C2, #C8, #C4, #C8]
- #C10 = core::_ImmutableMap<core::List<core::int?>*, Null> {_kvPairs:#C9}
- #C11 = col::_UnmodifiableSet<core::List<core::int?>*> {_map:#C10}
- #C12 = <core::int>[]
+ #C6 = <core::List<core::int?>*, core::int*>{#C2:#C3, #C4:#C5)
+ #C7 = <core::List<core::int?>*>{#C2, #C4}
+ #C8 = <core::int>[]
}
diff --git a/pkg/front_end/testcases/nnbd/issue42546.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue42546.dart.strong.expect
index 8c2a328..2538d7e 100644
--- a/pkg/front_end/testcases/nnbd/issue42546.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/issue42546.dart.strong.expect
@@ -29,13 +29,13 @@
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) →? core::bool test = #C1}) → asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>
return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → FutureOr<void>action) → asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>
- return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
+ return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () →? FutureOr<self::Divergent<self::Divergent<self::Divergent::T%>>>onTimeout = #C1}) → asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>
- return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C9: onTimeout}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
+ return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: onTimeout}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ then<R extends core::Object? = dynamic>((self::Divergent<self::Divergent<self::Divergent::T%>>) → FutureOr<self::Divergent::then::R%>onValue, {core::Function? onError = #C1}) → asy::Future<self::Divergent::then::R%>
- return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, core::List::unmodifiable<core::Type*>(<core::Type*>[self::Divergent::then::R%]), core::List::unmodifiable<dynamic>(<dynamic>[onValue]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C11: onError}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<self::Divergent::then::R%>;
+ return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, core::List::unmodifiable<core::Type*>(<core::Type*>[self::Divergent::then::R%]), core::List::unmodifiable<dynamic>(<dynamic>[onValue]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onError}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<self::Divergent::then::R%>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::Divergent<self::Divergent<self::Divergent::T%>>>
- return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C12, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Stream<self::Divergent<self::Divergent<self::Divergent::T%>>>;
+ return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C11, 0, #C3, #C12, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Stream<self::Divergent<self::Divergent<self::Divergent::T%>>>;
}
static method test() → dynamic async {
asy::Future<self::Divergent<self::Divergent<core::int>>> x = invalid-expression "pkg/front_end/testcases/nnbd/issue42546.dart:14:75: Error: A value of type 'Future<Divergent<Divergent<Divergent<int>>>>' can't be assigned to a variable of type 'Future<Divergent<Divergent<int>>>'.
@@ -56,11 +56,11 @@
#C3 = <core::Type*>[]
#C4 = #test
#C5 = #whenComplete
- #C6 = <dynamic>[]
- #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
- #C8 = #timeout
- #C9 = #onTimeout
- #C10 = #then
- #C11 = #onError
- #C12 = #asStream
+ #C6 = <core::Symbol*, dynamic>{)
+ #C7 = #timeout
+ #C8 = #onTimeout
+ #C9 = #then
+ #C10 = #onError
+ #C11 = #asStream
+ #C12 = <dynamic>[]
}
diff --git a/pkg/front_end/testcases/nnbd/issue42546.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue42546.dart.strong.transformed.expect
index 204fd46..7003dff 100644
--- a/pkg/front_end/testcases/nnbd/issue42546.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue42546.dart.strong.transformed.expect
@@ -29,13 +29,13 @@
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) →? core::bool test = #C1}) → asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>
return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → FutureOr<void>action) → asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>
- return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
+ return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () →? FutureOr<self::Divergent<self::Divergent<self::Divergent::T%>>>onTimeout = #C1}) → asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>
- return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C9: onTimeout}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
+ return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: onTimeout}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ then<R extends core::Object? = dynamic>((self::Divergent<self::Divergent<self::Divergent::T%>>) → FutureOr<self::Divergent::then::R%>onValue, {core::Function? onError = #C1}) → asy::Future<self::Divergent::then::R%>
- return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, core::List::unmodifiable<core::Type*>(core::_GrowableList::_literal1<core::Type*>(self::Divergent::then::R%)), core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onValue)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C11: onError}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<self::Divergent::then::R%>;
+ return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, core::List::unmodifiable<core::Type*>(core::_GrowableList::_literal1<core::Type*>(self::Divergent::then::R%)), core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onValue)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onError}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<self::Divergent::then::R%>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::Divergent<self::Divergent<self::Divergent::T%>>>
- return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C12, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Stream<self::Divergent<self::Divergent<self::Divergent::T%>>>;
+ return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C11, 0, #C3, #C12, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Stream<self::Divergent<self::Divergent<self::Divergent::T%>>>;
}
static method test() → dynamic /* originally async */ {
final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
@@ -105,11 +105,11 @@
#C3 = <core::Type*>[]
#C4 = #test
#C5 = #whenComplete
- #C6 = <dynamic>[]
- #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
- #C8 = #timeout
- #C9 = #onTimeout
- #C10 = #then
- #C11 = #onError
- #C12 = #asStream
+ #C6 = <core::Symbol*, dynamic>{)
+ #C7 = #timeout
+ #C8 = #onTimeout
+ #C9 = #then
+ #C10 = #onError
+ #C11 = #asStream
+ #C12 = <dynamic>[]
}
diff --git a/pkg/front_end/testcases/nnbd/issue42546.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue42546.dart.weak.expect
index 8c2a328..2538d7e 100644
--- a/pkg/front_end/testcases/nnbd/issue42546.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/issue42546.dart.weak.expect
@@ -29,13 +29,13 @@
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) →? core::bool test = #C1}) → asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>
return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[onError]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → FutureOr<void>action) → asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>
- return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
+ return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[action]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () →? FutureOr<self::Divergent<self::Divergent<self::Divergent::T%>>>onTimeout = #C1}) → asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>
- return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C9: onTimeout}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
+ return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, core::List::unmodifiable<dynamic>(<dynamic>[timeLimit]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: onTimeout}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ then<R extends core::Object? = dynamic>((self::Divergent<self::Divergent<self::Divergent::T%>>) → FutureOr<self::Divergent::then::R%>onValue, {core::Function? onError = #C1}) → asy::Future<self::Divergent::then::R%>
- return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, core::List::unmodifiable<core::Type*>(<core::Type*>[self::Divergent::then::R%]), core::List::unmodifiable<dynamic>(<dynamic>[onValue]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C11: onError}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<self::Divergent::then::R%>;
+ return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, core::List::unmodifiable<core::Type*>(<core::Type*>[self::Divergent::then::R%]), core::List::unmodifiable<dynamic>(<dynamic>[onValue]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onError}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<self::Divergent::then::R%>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::Divergent<self::Divergent<self::Divergent::T%>>>
- return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C12, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Stream<self::Divergent<self::Divergent<self::Divergent::T%>>>;
+ return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C11, 0, #C3, #C12, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Stream<self::Divergent<self::Divergent<self::Divergent::T%>>>;
}
static method test() → dynamic async {
asy::Future<self::Divergent<self::Divergent<core::int>>> x = invalid-expression "pkg/front_end/testcases/nnbd/issue42546.dart:14:75: Error: A value of type 'Future<Divergent<Divergent<Divergent<int>>>>' can't be assigned to a variable of type 'Future<Divergent<Divergent<int>>>'.
@@ -56,11 +56,11 @@
#C3 = <core::Type*>[]
#C4 = #test
#C5 = #whenComplete
- #C6 = <dynamic>[]
- #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
- #C8 = #timeout
- #C9 = #onTimeout
- #C10 = #then
- #C11 = #onError
- #C12 = #asStream
+ #C6 = <core::Symbol*, dynamic>{)
+ #C7 = #timeout
+ #C8 = #onTimeout
+ #C9 = #then
+ #C10 = #onError
+ #C11 = #asStream
+ #C12 = <dynamic>[]
}
diff --git a/pkg/front_end/testcases/nnbd/issue42546.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd/issue42546.dart.weak.outline.expect
index dd671d9..9c67937 100644
--- a/pkg/front_end/testcases/nnbd/issue42546.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd/issue42546.dart.weak.outline.expect
@@ -33,7 +33,7 @@
Evaluated: SymbolLiteral @ org-dartlang-sdk:///sdk/lib/async/future.dart:639:13 -> SymbolConstant(#test)
Evaluated: SymbolLiteral @ org-dartlang-sdk:///sdk/lib/async/future.dart:675:13 -> SymbolConstant(#whenComplete)
Evaluated: ListLiteral @ org-dartlang-sdk:///sdk/lib/async/future.dart:675:13 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-sdk:///sdk/lib/async/future.dart:675:13 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-sdk:///sdk/lib/async/future.dart:675:13 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-sdk:///sdk/lib/async/future.dart:698:13 -> SymbolConstant(#timeout)
Evaluated: ListLiteral @ org-dartlang-sdk:///sdk/lib/async/future.dart:698:13 -> ListConstant(const <Type*>[])
Evaluated: SymbolLiteral @ org-dartlang-sdk:///sdk/lib/async/future.dart:698:13 -> SymbolConstant(#onTimeout)
@@ -42,5 +42,5 @@
Evaluated: SymbolLiteral @ org-dartlang-sdk:///sdk/lib/async/future.dart:684:13 -> SymbolConstant(#asStream)
Evaluated: ListLiteral @ org-dartlang-sdk:///sdk/lib/async/future.dart:684:13 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-sdk:///sdk/lib/async/future.dart:684:13 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-sdk:///sdk/lib/async/future.dart:684:13 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-sdk:///sdk/lib/async/future.dart:684:13 -> MapConstant(const <Symbol*, dynamic>{})
Extra constant evaluation: evaluated: 61, effectively constant: 15
diff --git a/pkg/front_end/testcases/nnbd/issue42546.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue42546.dart.weak.transformed.expect
index 204fd46..7003dff 100644
--- a/pkg/front_end/testcases/nnbd/issue42546.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue42546.dart.weak.transformed.expect
@@ -29,13 +29,13 @@
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError, {(core::Object) →? core::bool test = #C1}) → asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>
return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onError)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C4: test}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → FutureOr<void>action) → asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>
- return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
+ return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(action)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ timeout(core::Duration timeLimit, {generic-covariant-impl () →? FutureOr<self::Divergent<self::Divergent<self::Divergent::T%>>>onTimeout = #C1}) → asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>
- return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C9: onTimeout}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
+ return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: onTimeout}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<self::Divergent<self::Divergent<self::Divergent::T%>>>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ then<R extends core::Object? = dynamic>((self::Divergent<self::Divergent<self::Divergent::T%>>) → FutureOr<self::Divergent::then::R%>onValue, {core::Function? onError = #C1}) → asy::Future<self::Divergent::then::R%>
- return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C10, 0, core::List::unmodifiable<core::Type*>(core::_GrowableList::_literal1<core::Type*>(self::Divergent::then::R%)), core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onValue)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C11: onError}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<self::Divergent::then::R%>;
+ return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, core::List::unmodifiable<core::Type*>(core::_GrowableList::_literal1<core::Type*>(self::Divergent::then::R%)), core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(onValue)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onError}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<self::Divergent::then::R%>;
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::Divergent<self::Divergent<self::Divergent::T%>>>
- return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C12, 0, #C3, #C6, core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Stream<self::Divergent<self::Divergent<self::Divergent::T%>>>;
+ return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C11, 0, #C3, #C12, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Stream<self::Divergent<self::Divergent<self::Divergent::T%>>>;
}
static method test() → dynamic /* originally async */ {
final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
@@ -105,11 +105,11 @@
#C3 = <core::Type*>[]
#C4 = #test
#C5 = #whenComplete
- #C6 = <dynamic>[]
- #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
- #C8 = #timeout
- #C9 = #onTimeout
- #C10 = #then
- #C11 = #onError
- #C12 = #asStream
+ #C6 = <core::Symbol*, dynamic>{)
+ #C7 = #timeout
+ #C8 = #onTimeout
+ #C9 = #then
+ #C10 = #onError
+ #C11 = #asStream
+ #C12 = <dynamic>[]
}
diff --git a/pkg/front_end/testcases/nnbd_mixed/constants.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/constants.dart.weak.expect
index fc18272..b504950 100644
--- a/pkg/front_end/testcases/nnbd_mixed/constants.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/constants.dart.weak.expect
@@ -8,36 +8,36 @@
static const field (core::int) → core::int partialInstantiation = #C2;
static const field con::Class<core::int> instance = #C4;
static const field core::List<core::int> listLiteral = #C5;
-static const field core::Set<core::int> setLiteral = #C9;
-static const field core::Map<core::int, core::String> mapLiteral = #C12;
+static const field core::Set<core::int> setLiteral = #C6;
+static const field core::Map<core::int, core::String> mapLiteral = #C8;
static const field core::List<core::int> listConcatenation = #C5;
-static const field core::Set<core::int> setConcatenation = #C9;
-static const field core::Map<core::int, core::String> mapConcatenation = #C12;
-static const field core::bool partialInstantiationIdentical = #C13;
-static const field core::bool instanceIdentical = #C13;
-static const field core::bool listLiteralIdentical = #C13;
-static const field core::bool setLiteralIdentical = #C13;
-static const field core::bool mapLiteralIdentical = #C13;
-static const field core::bool listConcatenationIdentical = #C13;
-static const field core::bool setConcatenationIdentical = #C13;
-static const field core::bool mapConcatenationIdentical = #C13;
+static const field core::Set<core::int> setConcatenation = #C6;
+static const field core::Map<core::int, core::String> mapConcatenation = #C8;
+static const field core::bool partialInstantiationIdentical = #C9;
+static const field core::bool instanceIdentical = #C9;
+static const field core::bool listLiteralIdentical = #C9;
+static const field core::bool setLiteralIdentical = #C9;
+static const field core::bool mapLiteralIdentical = #C9;
+static const field core::bool listConcatenationIdentical = #C9;
+static const field core::bool setConcatenationIdentical = #C9;
+static const field core::bool mapConcatenationIdentical = #C9;
static method main() → dynamic {
self::test(#C2, #C2);
self::test(#C4, #C4);
self::test(#C5, #C5);
- self::test(#C9, #C9);
- self::test(#C12, #C12);
+ self::test(#C6, #C6);
+ self::test(#C8, #C8);
self::test(#C5, #C5);
- self::test(#C9, #C9);
- self::test(#C12, #C12);
- self::test(true, #C13);
- self::test(true, #C13);
- self::test(true, #C13);
- self::test(true, #C13);
- self::test(true, #C13);
- self::test(true, #C13);
- self::test(true, #C13);
- self::test(true, #C13);
+ self::test(#C6, #C6);
+ self::test(#C8, #C8);
+ self::test(true, #C9);
+ self::test(true, #C9);
+ self::test(true, #C9);
+ self::test(true, #C9);
+ self::test(true, #C9);
+ self::test(true, #C9);
+ self::test(true, #C9);
+ self::test(true, #C9);
}
static method test(dynamic expected, dynamic actual) → dynamic {
core::print("test(${expected}, ${actual})");
@@ -68,15 +68,15 @@
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-static const field (core::Object*, core::Object*) →* core::bool* c2 = #C14;
+static const field (core::Object*, core::Object*) →* core::bool* c2 = #C10;
static const field (core::int*) →* core::int* partialInstantiation = #C2;
static const field con::Class<core::int*>* instance = #C4;
static const field core::List<core::int*>* listLiteral = #C5;
-static const field core::Set<core::int*>* setLiteral = #C9;
-static const field core::Map<core::int*, core::String*>* mapLiteral = #C12;
+static const field core::Set<core::int*>* setLiteral = #C6;
+static const field core::Map<core::int*, core::String*>* mapLiteral = #C8;
static const field core::List<core::int*>* listConcatenation = #C5;
-static const field core::Set<core::int*>* setConcatenation = #C9;
-static const field core::Map<core::int*, core::String*>* mapConcatenation = #C12;
+static const field core::Set<core::int*>* setConcatenation = #C6;
+static const field core::Map<core::int*, core::String*>* mapConcatenation = #C8;
static method id<T extends core::Object* = dynamic>(con::id::T* t) → con::id::T*
return t;
@@ -86,15 +86,11 @@
#C3 = 0
#C4 = con::Class<core::int*> {field:#C3}
#C5 = <core::int*>[#C3]
- #C6 = null
- #C7 = <dynamic>[#C3, #C6]
- #C8 = core::_ImmutableMap<core::int*, Null> {_kvPairs:#C7}
- #C9 = col::_UnmodifiableSet<core::int*> {_map:#C8}
- #C10 = "foo"
- #C11 = <dynamic>[#C3, #C10]
- #C12 = core::_ImmutableMap<core::int*, core::String*> {_kvPairs:#C11}
- #C13 = true
- #C14 = static-tearoff core::identical
+ #C6 = <core::int*>{#C3}
+ #C7 = "foo"
+ #C8 = <core::int*, core::String*>{#C3:#C7)
+ #C9 = true
+ #C10 = static-tearoff core::identical
}
diff --git a/pkg/front_end/testcases/nnbd_mixed/constants.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd_mixed/constants.dart.weak.outline.expect
index 6e8783d..9db53e6 100644
--- a/pkg/front_end/testcases/nnbd_mixed/constants.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/constants.dart.weak.outline.expect
@@ -65,11 +65,11 @@
Evaluated: Instantiation @ org-dartlang-testcase:///constants.dart:7:52 -> InstantiationConstant(id<int*>)
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///constants.dart:8:24 -> InstanceConstant(const Class<int*>{Class.field: 0})
Evaluated: ListLiteral @ org-dartlang-testcase:///constants.dart:9:26 -> ListConstant(const <int*>[0])
-Evaluated: SetLiteral @ org-dartlang-testcase:///constants.dart:10:25 -> InstanceConstant(const _UnmodifiableSet<int*>{_UnmodifiableSet._map: const _ImmutableMap<int*, Null>{_ImmutableMap._kvPairs: const <dynamic>[0, null]}})
-Evaluated: MapLiteral @ org-dartlang-testcase:///constants.dart:11:33 -> InstanceConstant(const _ImmutableMap<int*, String*>{_ImmutableMap._kvPairs: const <dynamic>[0, "foo"]})
+Evaluated: SetLiteral @ org-dartlang-testcase:///constants.dart:10:25 -> SetConstant(const <int*>{0})
+Evaluated: MapLiteral @ org-dartlang-testcase:///constants.dart:11:33 -> MapConstant(const <int*, String*>{0: "foo"})
Evaluated: ListConcatenation @ org-dartlang-testcase:///constants.dart:12:32 -> ListConstant(const <int*>[0])
-Evaluated: SetConcatenation @ org-dartlang-testcase:///constants.dart:13:31 -> InstanceConstant(const _UnmodifiableSet<int*>{_UnmodifiableSet._map: const _ImmutableMap<int*, Null>{_ImmutableMap._kvPairs: const <dynamic>[0, null]}})
-Evaluated: MapConcatenation @ org-dartlang-testcase:///constants.dart:14:7 -> InstanceConstant(const _ImmutableMap<int*, String*>{_ImmutableMap._kvPairs: const <dynamic>[0, "foo"]})
+Evaluated: SetConcatenation @ org-dartlang-testcase:///constants.dart:13:31 -> SetConstant(const <int*>{0})
+Evaluated: MapConcatenation @ org-dartlang-testcase:///constants.dart:14:7 -> MapConstant(const <int*, String*>{0: "foo"})
Evaluated: StaticInvocation @ org-dartlang-testcase:///constants.dart:17:5 -> BoolConstant(true)
Evaluated: StaticInvocation @ org-dartlang-testcase:///constants.dart:18:27 -> BoolConstant(true)
Evaluated: StaticInvocation @ org-dartlang-testcase:///constants.dart:19:30 -> BoolConstant(true)
@@ -82,9 +82,9 @@
Evaluated: Instantiation @ org-dartlang-testcase:///constants_lib.dart:19:48 -> InstantiationConstant(id<int*>)
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///constants_lib.dart:20:24 -> InstanceConstant(const Class<int*>{Class.field: 0})
Evaluated: ListLiteral @ org-dartlang-testcase:///constants_lib.dart:21:26 -> ListConstant(const <int*>[0])
-Evaluated: SetLiteral @ org-dartlang-testcase:///constants_lib.dart:22:25 -> InstanceConstant(const _UnmodifiableSet<int*>{_UnmodifiableSet._map: const _ImmutableMap<int*, Null>{_ImmutableMap._kvPairs: const <dynamic>[0, null]}})
-Evaluated: MapLiteral @ org-dartlang-testcase:///constants_lib.dart:23:33 -> InstanceConstant(const _ImmutableMap<int*, String*>{_ImmutableMap._kvPairs: const <dynamic>[0, "foo"]})
+Evaluated: SetLiteral @ org-dartlang-testcase:///constants_lib.dart:22:25 -> SetConstant(const <int*>{0})
+Evaluated: MapLiteral @ org-dartlang-testcase:///constants_lib.dart:23:33 -> MapConstant(const <int*, String*>{0: "foo"})
Evaluated: ListConcatenation @ org-dartlang-testcase:///constants_lib.dart:24:32 -> ListConstant(const <int*>[0])
-Evaluated: SetConcatenation @ org-dartlang-testcase:///constants_lib.dart:25:31 -> InstanceConstant(const _UnmodifiableSet<int*>{_UnmodifiableSet._map: const _ImmutableMap<int*, Null>{_ImmutableMap._kvPairs: const <dynamic>[0, null]}})
-Evaluated: MapConcatenation @ org-dartlang-testcase:///constants_lib.dart:26:7 -> InstanceConstant(const _ImmutableMap<int*, String*>{_ImmutableMap._kvPairs: const <dynamic>[0, "foo"]})
+Evaluated: SetConcatenation @ org-dartlang-testcase:///constants_lib.dart:25:31 -> SetConstant(const <int*>{0})
+Evaluated: MapConcatenation @ org-dartlang-testcase:///constants_lib.dart:26:7 -> MapConstant(const <int*, String*>{0: "foo"})
Extra constant evaluation: evaluated: 26, effectively constant: 25
diff --git a/pkg/front_end/testcases/nnbd_mixed/constants.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/constants.dart.weak.transformed.expect
index fc18272..b504950 100644
--- a/pkg/front_end/testcases/nnbd_mixed/constants.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/constants.dart.weak.transformed.expect
@@ -8,36 +8,36 @@
static const field (core::int) → core::int partialInstantiation = #C2;
static const field con::Class<core::int> instance = #C4;
static const field core::List<core::int> listLiteral = #C5;
-static const field core::Set<core::int> setLiteral = #C9;
-static const field core::Map<core::int, core::String> mapLiteral = #C12;
+static const field core::Set<core::int> setLiteral = #C6;
+static const field core::Map<core::int, core::String> mapLiteral = #C8;
static const field core::List<core::int> listConcatenation = #C5;
-static const field core::Set<core::int> setConcatenation = #C9;
-static const field core::Map<core::int, core::String> mapConcatenation = #C12;
-static const field core::bool partialInstantiationIdentical = #C13;
-static const field core::bool instanceIdentical = #C13;
-static const field core::bool listLiteralIdentical = #C13;
-static const field core::bool setLiteralIdentical = #C13;
-static const field core::bool mapLiteralIdentical = #C13;
-static const field core::bool listConcatenationIdentical = #C13;
-static const field core::bool setConcatenationIdentical = #C13;
-static const field core::bool mapConcatenationIdentical = #C13;
+static const field core::Set<core::int> setConcatenation = #C6;
+static const field core::Map<core::int, core::String> mapConcatenation = #C8;
+static const field core::bool partialInstantiationIdentical = #C9;
+static const field core::bool instanceIdentical = #C9;
+static const field core::bool listLiteralIdentical = #C9;
+static const field core::bool setLiteralIdentical = #C9;
+static const field core::bool mapLiteralIdentical = #C9;
+static const field core::bool listConcatenationIdentical = #C9;
+static const field core::bool setConcatenationIdentical = #C9;
+static const field core::bool mapConcatenationIdentical = #C9;
static method main() → dynamic {
self::test(#C2, #C2);
self::test(#C4, #C4);
self::test(#C5, #C5);
- self::test(#C9, #C9);
- self::test(#C12, #C12);
+ self::test(#C6, #C6);
+ self::test(#C8, #C8);
self::test(#C5, #C5);
- self::test(#C9, #C9);
- self::test(#C12, #C12);
- self::test(true, #C13);
- self::test(true, #C13);
- self::test(true, #C13);
- self::test(true, #C13);
- self::test(true, #C13);
- self::test(true, #C13);
- self::test(true, #C13);
- self::test(true, #C13);
+ self::test(#C6, #C6);
+ self::test(#C8, #C8);
+ self::test(true, #C9);
+ self::test(true, #C9);
+ self::test(true, #C9);
+ self::test(true, #C9);
+ self::test(true, #C9);
+ self::test(true, #C9);
+ self::test(true, #C9);
+ self::test(true, #C9);
}
static method test(dynamic expected, dynamic actual) → dynamic {
core::print("test(${expected}, ${actual})");
@@ -68,15 +68,15 @@
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-static const field (core::Object*, core::Object*) →* core::bool* c2 = #C14;
+static const field (core::Object*, core::Object*) →* core::bool* c2 = #C10;
static const field (core::int*) →* core::int* partialInstantiation = #C2;
static const field con::Class<core::int*>* instance = #C4;
static const field core::List<core::int*>* listLiteral = #C5;
-static const field core::Set<core::int*>* setLiteral = #C9;
-static const field core::Map<core::int*, core::String*>* mapLiteral = #C12;
+static const field core::Set<core::int*>* setLiteral = #C6;
+static const field core::Map<core::int*, core::String*>* mapLiteral = #C8;
static const field core::List<core::int*>* listConcatenation = #C5;
-static const field core::Set<core::int*>* setConcatenation = #C9;
-static const field core::Map<core::int*, core::String*>* mapConcatenation = #C12;
+static const field core::Set<core::int*>* setConcatenation = #C6;
+static const field core::Map<core::int*, core::String*>* mapConcatenation = #C8;
static method id<T extends core::Object* = dynamic>(con::id::T* t) → con::id::T*
return t;
@@ -86,15 +86,11 @@
#C3 = 0
#C4 = con::Class<core::int*> {field:#C3}
#C5 = <core::int*>[#C3]
- #C6 = null
- #C7 = <dynamic>[#C3, #C6]
- #C8 = core::_ImmutableMap<core::int*, Null> {_kvPairs:#C7}
- #C9 = col::_UnmodifiableSet<core::int*> {_map:#C8}
- #C10 = "foo"
- #C11 = <dynamic>[#C3, #C10]
- #C12 = core::_ImmutableMap<core::int*, core::String*> {_kvPairs:#C11}
- #C13 = true
- #C14 = static-tearoff core::identical
+ #C6 = <core::int*>{#C3}
+ #C7 = "foo"
+ #C8 = <core::int*, core::String*>{#C3:#C7)
+ #C9 = true
+ #C10 = static-tearoff core::identical
}
diff --git a/pkg/front_end/testcases/nnbd_mixed/hierarchy/inherited_implements.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/hierarchy/inherited_implements.dart.weak.expect
index 1604316..eeb8541 100644
--- a/pkg/front_end/testcases/nnbd_mixed/hierarchy/inherited_implements.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/hierarchy/inherited_implements.dart.weak.expect
@@ -260,6 +260,6 @@
#C2 = #mixedInMethod
#C3 = <core::Type*>[]
#C4 = <dynamic>[]
- #C5 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C4}
+ #C5 = <core::Symbol*, dynamic>{)
#C6 = #extendedMethod
}
diff --git a/pkg/front_end/testcases/nnbd_mixed/hierarchy/inherited_implements.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd_mixed/hierarchy/inherited_implements.dart.weak.outline.expect
index a127912..645b335 100644
--- a/pkg/front_end/testcases/nnbd_mixed/hierarchy/inherited_implements.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/hierarchy/inherited_implements.dart.weak.outline.expect
@@ -248,19 +248,19 @@
Evaluated: SymbolLiteral @ org-dartlang-testcase:///inherited_implements.dart:20:7 -> SymbolConstant(#mixedInMethod)
Evaluated: ListLiteral @ org-dartlang-testcase:///inherited_implements.dart:20:7 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///inherited_implements.dart:20:7 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///inherited_implements.dart:20:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///inherited_implements.dart:20:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///inherited_implements.dart:19:7 -> SymbolConstant(#extendedMethod)
Evaluated: ListLiteral @ org-dartlang-testcase:///inherited_implements.dart:19:7 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///inherited_implements.dart:19:7 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///inherited_implements.dart:19:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///inherited_implements.dart:19:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: StaticGet @ org-dartlang-testcase:///inherited_implements.dart:49:4 -> InstanceConstant(const _Override{})
Evaluated: StaticGet @ org-dartlang-testcase:///inherited_implements.dart:59:4 -> InstanceConstant(const _Override{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///inherited_implements.dart:64:7 -> SymbolConstant(#extendedMethod)
Evaluated: ListLiteral @ org-dartlang-testcase:///inherited_implements.dart:64:7 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///inherited_implements.dart:64:7 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///inherited_implements.dart:64:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///inherited_implements.dart:64:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///inherited_implements.dart:65:7 -> SymbolConstant(#mixedInMethod)
Evaluated: ListLiteral @ org-dartlang-testcase:///inherited_implements.dart:65:7 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///inherited_implements.dart:65:7 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///inherited_implements.dart:65:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///inherited_implements.dart:65:7 -> MapConstant(const <Symbol*, dynamic>{})
Extra constant evaluation: evaluated: 45, effectively constant: 20
diff --git a/pkg/front_end/testcases/nnbd_mixed/hierarchy/inherited_implements.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/hierarchy/inherited_implements.dart.weak.transformed.expect
index b9dfa96..f0de54f 100644
--- a/pkg/front_end/testcases/nnbd_mixed/hierarchy/inherited_implements.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/hierarchy/inherited_implements.dart.weak.transformed.expect
@@ -260,6 +260,6 @@
#C2 = #mixedInMethod
#C3 = <core::Type*>[]
#C4 = <dynamic>[]
- #C5 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C4}
+ #C5 = <core::Symbol*, dynamic>{)
#C6 = #extendedMethod
}
diff --git a/pkg/front_end/testcases/nnbd_mixed/hierarchy/mixin_from_dill/main.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/hierarchy/mixin_from_dill/main.dart.weak.expect
index 73a2b06..980d6fe 100644
--- a/pkg/front_end/testcases/nnbd_mixed/hierarchy/mixin_from_dill/main.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/hierarchy/mixin_from_dill/main.dart.weak.expect
@@ -197,6 +197,6 @@
#C1 = #org-dartlang-testcase:///opt_in_lib2.dart::_privateGetter
#C2 = <core::Type*>[]
#C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C4 = <core::Symbol*, dynamic>{)
#C5 = #org-dartlang-testcase:///opt_in_lib2.dart::_privateSetter=
}
diff --git a/pkg/front_end/testcases/nnbd_mixed/hierarchy/mixin_from_dill/main.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd_mixed/hierarchy/mixin_from_dill/main.dart.weak.outline.expect
index 1ec283b..e5c1602 100644
--- a/pkg/front_end/testcases/nnbd_mixed/hierarchy/mixin_from_dill/main.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/hierarchy/mixin_from_dill/main.dart.weak.outline.expect
@@ -145,6 +145,6 @@
#C1 = #org-dartlang-testcase:///opt_in_lib2.dart::_privateGetter
#C2 = <core::Type*>[]
#C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C4 = <core::Symbol*, dynamic>{)
#C5 = #org-dartlang-testcase:///opt_in_lib2.dart::_privateSetter=
}
diff --git a/pkg/front_end/testcases/nnbd_mixed/hierarchy/mixin_from_dill/main.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/hierarchy/mixin_from_dill/main.dart.weak.transformed.expect
index f9dd954..be4c652 100644
--- a/pkg/front_end/testcases/nnbd_mixed/hierarchy/mixin_from_dill/main.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/hierarchy/mixin_from_dill/main.dart.weak.transformed.expect
@@ -197,6 +197,6 @@
#C1 = #org-dartlang-testcase:///opt_in_lib2.dart::_privateGetter
#C2 = <core::Type*>[]
#C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C4 = <core::Symbol*, dynamic>{)
#C5 = #org-dartlang-testcase:///opt_in_lib2.dart::_privateSetter=
}
diff --git a/pkg/front_end/testcases/nnbd_mixed/hierarchy/no_such_method.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/hierarchy/no_such_method.dart.weak.expect
index 7914b57..524ceff 100644
--- a/pkg/front_end/testcases/nnbd_mixed/hierarchy/no_such_method.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/hierarchy/no_such_method.dart.weak.expect
@@ -361,7 +361,7 @@
#C2 = #getter
#C3 = <core::Type*>[]
#C4 = <dynamic>[]
- #C5 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C4}
+ #C5 = <core::Symbol*, dynamic>{)
#C6 = #field
#C7 = #method
#C8 = #finalField
diff --git a/pkg/front_end/testcases/nnbd_mixed/hierarchy/no_such_method.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd_mixed/hierarchy/no_such_method.dart.weak.outline.expect
index 87ecfb3..bb3b265 100644
--- a/pkg/front_end/testcases/nnbd_mixed/hierarchy/no_such_method.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/hierarchy/no_such_method.dart.weak.outline.expect
@@ -333,114 +333,114 @@
Evaluated: SymbolLiteral @ org-dartlang-testcase:///no_such_method.dart:7:11 -> SymbolConstant(#getter)
Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method.dart:7:11 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method.dart:7:11 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:7:11 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:7:11 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///no_such_method.dart:9:7 -> SymbolConstant(#field)
Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method.dart:9:7 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method.dart:9:7 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:9:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:9:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///no_such_method.dart:6:8 -> SymbolConstant(#method)
Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method.dart:6:8 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method.dart:6:8 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:6:8 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:6:8 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///no_such_method.dart:10:13 -> SymbolConstant(#finalField)
Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method.dart:10:13 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method.dart:10:13 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:10:13 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:10:13 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///no_such_method.dart:8:12 -> SymbolConstant(#setter=)
Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method.dart:8:12 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:8:12 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:8:12 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///no_such_method.dart:9:7 -> SymbolConstant(#field=)
Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method.dart:9:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:9:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:9:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///no_such_method.dart:7:11 -> SymbolConstant(#getter)
Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method.dart:7:11 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method.dart:7:11 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:7:11 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:7:11 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///no_such_method.dart:9:7 -> SymbolConstant(#field)
Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method.dart:9:7 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method.dart:9:7 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:9:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:9:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///no_such_method.dart:6:8 -> SymbolConstant(#method)
Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method.dart:6:8 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method.dart:6:8 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:6:8 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:6:8 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///no_such_method.dart:10:13 -> SymbolConstant(#finalField)
Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method.dart:10:13 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method.dart:10:13 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:10:13 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:10:13 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///no_such_method.dart:8:12 -> SymbolConstant(#setter=)
Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method.dart:8:12 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:8:12 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:8:12 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///no_such_method.dart:9:7 -> SymbolConstant(#field=)
Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method.dart:9:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:9:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:9:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: StaticGet @ org-dartlang-testcase:///no_such_method.dart:38:4 -> InstanceConstant(const _Override{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///no_such_method.dart:7:11 -> SymbolConstant(#getter)
Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method.dart:7:11 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method.dart:7:11 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:7:11 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:7:11 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///no_such_method.dart:9:7 -> SymbolConstant(#field)
Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method.dart:9:7 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method.dart:9:7 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:9:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:9:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///no_such_method.dart:6:8 -> SymbolConstant(#method)
Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method.dart:6:8 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method.dart:6:8 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:6:8 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:6:8 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///no_such_method.dart:10:13 -> SymbolConstant(#finalField)
Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method.dart:10:13 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method.dart:10:13 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:10:13 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:10:13 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///no_such_method.dart:8:12 -> SymbolConstant(#setter=)
Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method.dart:8:12 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:8:12 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:8:12 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///no_such_method.dart:9:7 -> SymbolConstant(#field=)
Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method.dart:9:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:9:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:9:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///no_such_method.dart:7:11 -> SymbolConstant(#getter)
Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method.dart:7:11 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method.dart:7:11 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:7:11 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:7:11 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///no_such_method.dart:9:7 -> SymbolConstant(#field)
Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method.dart:9:7 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method.dart:9:7 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:9:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:9:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///no_such_method.dart:6:8 -> SymbolConstant(#method)
Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method.dart:6:8 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method.dart:6:8 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:6:8 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:6:8 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///no_such_method.dart:10:13 -> SymbolConstant(#finalField)
Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method.dart:10:13 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method.dart:10:13 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:10:13 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:10:13 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///no_such_method.dart:8:12 -> SymbolConstant(#setter=)
Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method.dart:8:12 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:8:12 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:8:12 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///no_such_method.dart:9:7 -> SymbolConstant(#field=)
Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method.dart:9:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:9:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:9:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: StaticGet @ org-dartlang-testcase:///no_such_method.dart:57:4 -> InstanceConstant(const _Override{})
Evaluated: StaticGet @ org-dartlang-testcase:///no_such_method.dart:70:4 -> InstanceConstant(const _Override{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///no_such_method.dart:7:11 -> SymbolConstant(#getter)
Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method.dart:7:11 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method.dart:7:11 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:7:11 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:7:11 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///no_such_method.dart:9:7 -> SymbolConstant(#field)
Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method.dart:9:7 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method.dart:9:7 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:9:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:9:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///no_such_method.dart:6:8 -> SymbolConstant(#method)
Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method.dart:6:8 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method.dart:6:8 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:6:8 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:6:8 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///no_such_method.dart:10:13 -> SymbolConstant(#finalField)
Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method.dart:10:13 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method.dart:10:13 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:10:13 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:10:13 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///no_such_method.dart:8:12 -> SymbolConstant(#setter=)
Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method.dart:8:12 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:8:12 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:8:12 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///no_such_method.dart:9:7 -> SymbolConstant(#field=)
Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method.dart:9:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:9:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method.dart:9:7 -> MapConstant(const <Symbol*, dynamic>{})
Extra constant evaluation: evaluated: 283, effectively constant: 114
diff --git a/pkg/front_end/testcases/nnbd_mixed/hierarchy/no_such_method.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/hierarchy/no_such_method.dart.weak.transformed.expect
index c4bae58..c8f6ab8 100644
--- a/pkg/front_end/testcases/nnbd_mixed/hierarchy/no_such_method.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/hierarchy/no_such_method.dart.weak.transformed.expect
@@ -365,7 +365,7 @@
#C2 = #getter
#C3 = <core::Type*>[]
#C4 = <dynamic>[]
- #C5 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C4}
+ #C5 = <core::Symbol*, dynamic>{)
#C6 = #field
#C7 = #method
#C8 = #finalField
diff --git a/pkg/front_end/testcases/nnbd_mixed/mock_http_headers.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/mock_http_headers.dart.weak.expect
index ffde2b7..740dfc6 100644
--- a/pkg/front_end/testcases/nnbd_mixed/mock_http_headers.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/mock_http_headers.dart.weak.expect
@@ -86,7 +86,7 @@
#C1 = #date
#C2 = <core::Type*>[]
#C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C4 = <core::Symbol*, dynamic>{)
#C5 = #date=
#C6 = #expires
#C7 = #expires=
diff --git a/pkg/front_end/testcases/nnbd_mixed/mock_http_headers.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd_mixed/mock_http_headers.dart.weak.outline.expect
index 4e5f43d..4ba2007 100644
--- a/pkg/front_end/testcases/nnbd_mixed/mock_http_headers.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/mock_http_headers.dart.weak.outline.expect
@@ -86,72 +86,72 @@
Evaluated: SymbolLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> SymbolConstant(#date)
Evaluated: ListLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> SymbolConstant(#date=)
Evaluated: ListLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> SymbolConstant(#expires)
Evaluated: ListLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> SymbolConstant(#expires=)
Evaluated: ListLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> SymbolConstant(#ifModifiedSince)
Evaluated: ListLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> SymbolConstant(#ifModifiedSince=)
Evaluated: ListLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> SymbolConstant(#host)
Evaluated: ListLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> SymbolConstant(#host=)
Evaluated: ListLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> SymbolConstant(#port)
Evaluated: ListLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> SymbolConstant(#port=)
Evaluated: ListLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> SymbolConstant(#contentType)
Evaluated: ListLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> SymbolConstant(#contentType=)
Evaluated: ListLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> SymbolConstant(#contentLength)
Evaluated: ListLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> SymbolConstant(#contentLength=)
Evaluated: ListLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> SymbolConstant(#persistentConnection)
Evaluated: ListLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> SymbolConstant(#persistentConnection=)
Evaluated: ListLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> SymbolConstant(#chunkedTransferEncoding)
Evaluated: ListLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> SymbolConstant(#chunkedTransferEncoding=)
Evaluated: ListLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> SymbolConstant(#[])
Evaluated: ListLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> SymbolConstant(#value)
Evaluated: ListLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> SymbolConstant(#add)
Evaluated: ListLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> ListConstant(const <Type*>[])
Evaluated: SymbolLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> SymbolConstant(#preserveHeaderCase)
@@ -160,18 +160,18 @@
Evaluated: SymbolLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> SymbolConstant(#preserveHeaderCase)
Evaluated: SymbolLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> SymbolConstant(#remove)
Evaluated: ListLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> SymbolConstant(#removeAll)
Evaluated: ListLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> SymbolConstant(#forEach)
Evaluated: ListLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> SymbolConstant(#noFolding)
Evaluated: ListLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///mock_http_headers.dart:13:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-sdk:///sdk/lib/_http/http.dart:782:8 -> SymbolConstant(#clear)
Evaluated: ListLiteral @ org-dartlang-sdk:///sdk/lib/_http/http.dart:782:8 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-sdk:///sdk/lib/_http/http.dart:782:8 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-sdk:///sdk/lib/_http/http.dart:782:8 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-sdk:///sdk/lib/_http/http.dart:782:8 -> MapConstant(const <Symbol*, dynamic>{})
Extra constant evaluation: evaluated: 268, effectively constant: 91
diff --git a/pkg/front_end/testcases/nnbd_mixed/mock_http_headers.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/mock_http_headers.dart.weak.transformed.expect
index a1fdb15..e753783 100644
--- a/pkg/front_end/testcases/nnbd_mixed/mock_http_headers.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/mock_http_headers.dart.weak.transformed.expect
@@ -86,7 +86,7 @@
#C1 = #date
#C2 = <core::Type*>[]
#C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C4 = <core::Symbol*, dynamic>{)
#C5 = #date=
#C6 = #expires
#C7 = #expires=
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.weak.expect
index 7f113e8..8a70236 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.weak.expect
@@ -61,6 +61,6 @@
#C1 = #foo
#C2 = <core::Type*>[]
#C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C4 = <core::Symbol*, dynamic>{)
#C5 = #foo=
}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.weak.outline.expect
index 7186093..155b834 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.weak.outline.expect
@@ -50,8 +50,8 @@
Evaluated: SymbolLiteral @ org-dartlang-testcase:///abstract_accessors_from_field.dart:18:7 -> SymbolConstant(#foo)
Evaluated: ListLiteral @ org-dartlang-testcase:///abstract_accessors_from_field.dart:18:7 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///abstract_accessors_from_field.dart:18:7 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///abstract_accessors_from_field.dart:18:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///abstract_accessors_from_field.dart:18:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///abstract_accessors_from_field.dart:18:7 -> SymbolConstant(#foo=)
Evaluated: ListLiteral @ org-dartlang-testcase:///abstract_accessors_from_field.dart:18:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///abstract_accessors_from_field.dart:18:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///abstract_accessors_from_field.dart:18:7 -> MapConstant(const <Symbol*, dynamic>{})
Extra constant evaluation: evaluated: 19, effectively constant: 7
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.weak.transformed.expect
index df2d4d7..b0155f6 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.weak.transformed.expect
@@ -61,6 +61,6 @@
#C1 = #foo
#C2 = <core::Type*>[]
#C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C4 = <core::Symbol*, dynamic>{)
#C5 = #foo=
}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.weak.expect
index 61e3a07..c5739de 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.weak.expect
@@ -80,6 +80,6 @@
#C1 = #foo
#C2 = <core::Type*>[]
#C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C4 = <core::Symbol*, dynamic>{)
#C5 = #foo=
}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.weak.outline.expect
index 2893e4f..7bead7e 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.weak.outline.expect
@@ -69,8 +69,8 @@
Evaluated: SymbolLiteral @ org-dartlang-testcase:///abstract_accessors_from_field_arent_mixed_in.dart:12:7 -> SymbolConstant(#foo)
Evaluated: ListLiteral @ org-dartlang-testcase:///abstract_accessors_from_field_arent_mixed_in.dart:12:7 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///abstract_accessors_from_field_arent_mixed_in.dart:12:7 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///abstract_accessors_from_field_arent_mixed_in.dart:12:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///abstract_accessors_from_field_arent_mixed_in.dart:12:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///abstract_accessors_from_field_arent_mixed_in.dart:12:7 -> SymbolConstant(#foo=)
Evaluated: ListLiteral @ org-dartlang-testcase:///abstract_accessors_from_field_arent_mixed_in.dart:12:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///abstract_accessors_from_field_arent_mixed_in.dart:12:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///abstract_accessors_from_field_arent_mixed_in.dart:12:7 -> MapConstant(const <Symbol*, dynamic>{})
Extra constant evaluation: evaluated: 21, effectively constant: 7
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.weak.transformed.expect
index 3e76d00..b013048 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.weak.transformed.expect
@@ -82,6 +82,6 @@
#C1 = #foo
#C2 = <core::Type*>[]
#C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C4 = <core::Symbol*, dynamic>{)
#C5 = #foo=
}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.weak.expect
index 6a99e7d..49adc6d 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.weak.expect
@@ -41,7 +41,7 @@
: super self::B::•()
;
no-such-method-forwarder set foo(core::int* value) → void
- return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+ return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation*) →* dynamic};
}
abstract class D extends core::Object implements self::A {
synthetic constructor •() → self::D*
@@ -65,7 +65,7 @@
: super self::D::•()
;
no-such-method-forwarder get foo() → core::int*
- return this.{self::D::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::int*;
+ return this.{self::D::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 1, #C2, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::int*;
}
static method expectTypeError(() →* dynamic callback) → void {
try {
@@ -85,7 +85,7 @@
constants {
#C1 = #foo=
#C2 = <core::Type*>[]
- #C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
- #C5 = #foo
+ #C3 = <core::Symbol*, dynamic>{)
+ #C4 = #foo
+ #C5 = <dynamic>[]
}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.weak.outline.expect
index 1dc0f42..90f26d3 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.weak.outline.expect
@@ -72,9 +72,9 @@
Extra constant evaluation status:
Evaluated: SymbolLiteral @ org-dartlang-testcase:///abstract_accessors_from_field_one_defined.dart:17:7 -> SymbolConstant(#foo=)
Evaluated: ListLiteral @ org-dartlang-testcase:///abstract_accessors_from_field_one_defined.dart:17:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///abstract_accessors_from_field_one_defined.dart:17:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///abstract_accessors_from_field_one_defined.dart:17:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///abstract_accessors_from_field_one_defined.dart:17:7 -> SymbolConstant(#foo)
Evaluated: ListLiteral @ org-dartlang-testcase:///abstract_accessors_from_field_one_defined.dart:17:7 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///abstract_accessors_from_field_one_defined.dart:17:7 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///abstract_accessors_from_field_one_defined.dart:17:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///abstract_accessors_from_field_one_defined.dart:17:7 -> MapConstant(const <Symbol*, dynamic>{})
Extra constant evaluation: evaluated: 19, effectively constant: 7
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.weak.transformed.expect
index c260566..c864fe9 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.weak.transformed.expect
@@ -41,7 +41,7 @@
: super self::B::•()
;
no-such-method-forwarder set foo(core::int* value) → void
- return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+ return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation*) →* dynamic};
}
abstract class D extends core::Object implements self::A {
synthetic constructor •() → self::D*
@@ -65,7 +65,7 @@
: super self::D::•()
;
no-such-method-forwarder get foo() → core::int*
- return this.{self::D::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::int*;
+ return this.{self::D::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 1, #C2, #C5, core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::int*;
}
static method expectTypeError(() →* dynamic callback) → void {
try {
@@ -85,7 +85,7 @@
constants {
#C1 = #foo=
#C2 = <core::Type*>[]
- #C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
- #C5 = #foo
+ #C3 = <core::Symbol*, dynamic>{)
+ #C4 = #foo
+ #C5 = <dynamic>[]
}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.weak.expect
index bd14f88..6d0707e 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.weak.expect
@@ -56,6 +56,6 @@
#C1 = #foo
#C2 = <core::Type*>[]
#C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C4 = <core::Symbol*, dynamic>{)
#C5 = #foo=
}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.weak.outline.expect
index 34e2e03..a927c80 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.weak.outline.expect
@@ -46,8 +46,8 @@
Evaluated: SymbolLiteral @ org-dartlang-testcase:///abstract_accessors_from_field_with_substitution.dart:18:11 -> SymbolConstant(#foo)
Evaluated: ListLiteral @ org-dartlang-testcase:///abstract_accessors_from_field_with_substitution.dart:18:11 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///abstract_accessors_from_field_with_substitution.dart:18:11 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///abstract_accessors_from_field_with_substitution.dart:18:11 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///abstract_accessors_from_field_with_substitution.dart:18:11 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///abstract_accessors_from_field_with_substitution.dart:18:11 -> SymbolConstant(#foo=)
Evaluated: ListLiteral @ org-dartlang-testcase:///abstract_accessors_from_field_with_substitution.dart:18:11 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///abstract_accessors_from_field_with_substitution.dart:18:11 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///abstract_accessors_from_field_with_substitution.dart:18:11 -> MapConstant(const <Symbol*, dynamic>{})
Extra constant evaluation: evaluated: 19, effectively constant: 7
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.weak.transformed.expect
index f79ed2b..4daa123 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.weak.transformed.expect
@@ -56,6 +56,6 @@
#C1 = #foo
#C2 = <core::Type*>[]
#C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C4 = <core::Symbol*, dynamic>{)
#C5 = #foo=
}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.weak.expect
index f520300..06dbd87 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.weak.expect
@@ -48,5 +48,5 @@
#C1 = #foo
#C2 = <core::Type*>[]
#C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C4 = <core::Symbol*, dynamic>{)
}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.weak.outline.expect
index 63fd5b6..d735754 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.weak.outline.expect
@@ -46,5 +46,5 @@
Evaluated: SymbolLiteral @ org-dartlang-testcase:///abstract_interface_nsm_inherited.dart:16:8 -> SymbolConstant(#foo)
Evaluated: ListLiteral @ org-dartlang-testcase:///abstract_interface_nsm_inherited.dart:16:8 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///abstract_interface_nsm_inherited.dart:16:8 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///abstract_interface_nsm_inherited.dart:16:8 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///abstract_interface_nsm_inherited.dart:16:8 -> MapConstant(const <Symbol*, dynamic>{})
Extra constant evaluation: evaluated: 8, effectively constant: 4
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.weak.transformed.expect
index f520300..06dbd87 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_interface_nsm_inherited.dart.weak.transformed.expect
@@ -48,5 +48,5 @@
#C1 = #foo
#C2 = <core::Type*>[]
#C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C4 = <core::Symbol*, dynamic>{)
}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_abstract_different_type.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_abstract_different_type.dart.weak.expect
index dc49492..bfd7e08 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_abstract_different_type.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_abstract_different_type.dart.weak.expect
@@ -7,9 +7,9 @@
: super core::Object::•()
;
no-such-method-forwarder set push(core::int* x) → void
- return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+ return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation*) →* dynamic};
no-such-method-forwarder set float(covariant core::int* x) → void
- return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+ return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation*) →* dynamic};
method noSuchMethod(core::Invocation* i) → dynamic
return core::print("${this.{self::Base::runtimeType}{core::Type*}}: ${i.{core::Invocation::positionalArguments}{core::List<dynamic>*}.{core::List::[]}(0){(core::int*) →* dynamic}}");
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
@@ -32,9 +32,9 @@
: super self::Base::•()
;
no-such-method-forwarder set push(core::num* x) → void
- return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+ return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation*) →* dynamic};
no-such-method-forwarder set float(covariant core::num* x) → void
- return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+ return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation*) →* dynamic};
}
static method main() → dynamic {
core::List<self::Base*>* list = <self::Base*>[new self::Me::•(), new self::You::•()];
@@ -65,7 +65,6 @@
constants {
#C1 = #push=
#C2 = <core::Type*>[]
- #C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
- #C5 = #float=
+ #C3 = <core::Symbol*, dynamic>{)
+ #C4 = #float=
}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_abstract_different_type.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_abstract_different_type.dart.weak.outline.expect
index f455c15..c19ff967 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_abstract_different_type.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_abstract_different_type.dart.weak.outline.expect
@@ -40,14 +40,14 @@
Extra constant evaluation status:
Evaluated: SymbolLiteral @ org-dartlang-testcase:///abstract_override_abstract_different_type.dart:8:7 -> SymbolConstant(#push=)
Evaluated: ListLiteral @ org-dartlang-testcase:///abstract_override_abstract_different_type.dart:8:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///abstract_override_abstract_different_type.dart:8:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///abstract_override_abstract_different_type.dart:8:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///abstract_override_abstract_different_type.dart:9:7 -> SymbolConstant(#float=)
Evaluated: ListLiteral @ org-dartlang-testcase:///abstract_override_abstract_different_type.dart:9:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///abstract_override_abstract_different_type.dart:9:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///abstract_override_abstract_different_type.dart:9:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///abstract_override_abstract_different_type.dart:16:7 -> SymbolConstant(#push=)
Evaluated: ListLiteral @ org-dartlang-testcase:///abstract_override_abstract_different_type.dart:16:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///abstract_override_abstract_different_type.dart:16:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///abstract_override_abstract_different_type.dart:16:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///abstract_override_abstract_different_type.dart:17:7 -> SymbolConstant(#float=)
Evaluated: ListLiteral @ org-dartlang-testcase:///abstract_override_abstract_different_type.dart:17:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///abstract_override_abstract_different_type.dart:17:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///abstract_override_abstract_different_type.dart:17:7 -> MapConstant(const <Symbol*, dynamic>{})
Extra constant evaluation: evaluated: 40, effectively constant: 12
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_abstract_different_type.dart.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_abstract_different_type.dart.weak.transformed.expect
index 8560742..b578f00 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_abstract_different_type.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_abstract_different_type.dart.weak.transformed.expect
@@ -7,9 +7,9 @@
: super core::Object::•()
;
no-such-method-forwarder set push(core::int* x) → void
- return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(x)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+ return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(x)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation*) →* dynamic};
no-such-method-forwarder set float(covariant core::int* x) → void
- return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(x)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+ return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(x)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation*) →* dynamic};
method noSuchMethod(core::Invocation* i) → dynamic
return core::print("${this.{self::Base::runtimeType}{core::Type*}}: ${i.{core::Invocation::positionalArguments}{core::List<dynamic>*}.{core::List::[]}(0){(core::int*) →* dynamic}}");
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
@@ -32,9 +32,9 @@
: super self::Base::•()
;
no-such-method-forwarder set push(core::num* x) → void
- return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(x)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+ return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(x)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation*) →* dynamic};
no-such-method-forwarder set float(covariant core::num* x) → void
- return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(x)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+ return this.{self::Base::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(x)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation*) →* dynamic};
}
static method main() → dynamic {
core::List<self::Base*>* list = core::_GrowableList::_literal2<self::Base*>(new self::Me::•(), new self::You::•());
@@ -71,7 +71,6 @@
constants {
#C1 = #push=
#C2 = <core::Type*>[]
- #C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
- #C5 = #float=
+ #C3 = <core::Symbol*, dynamic>{)
+ #C4 = #float=
}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_with_different_signature.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_with_different_signature.dart.weak.expect
index 0cf425b..819fb97 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_with_different_signature.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_with_different_signature.dart.weak.expect
@@ -37,7 +37,7 @@
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
no-such-method-forwarder method eatFood(core::String* food) → core::bool*
- return this.{self::MockCat::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[food]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::bool*;
+ return this.{self::MockCat::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[food]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::bool*;
}
class MockCat2 extends self::MockCat {
synthetic constructor •() → self::MockCat2*
@@ -49,21 +49,21 @@
synthetic constructor •() → self::MockCat3*
: super self::MockCat2::•()
;
- no-such-method-forwarder method eatFood(core::String* food, {core::double* amount = #C5}) → core::bool*
- return this.{self::MockCat2::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[food]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C6: amount}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::bool*;
+ no-such-method-forwarder method eatFood(core::String* food, {core::double* amount = #C4}) → core::bool*
+ return this.{self::MockCat2::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[food]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C5: amount}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::bool*;
}
class MockCat4 extends self::MockCat2 implements self::HungryCat {
synthetic constructor •() → self::MockCat4*
: super self::MockCat2::•()
;
- no-such-method-forwarder method eatFood(core::String* food, {core::double* amount = #C5, core::double* yetAnother = #C5}) → core::bool*
- return this.{self::MockCat2::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[food]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C6: amount, #C7: yetAnother}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::bool*;
+ no-such-method-forwarder method eatFood(core::String* food, {core::double* amount = #C4, core::double* yetAnother = #C4}) → core::bool*
+ return this.{self::MockCat2::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[food]), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C5: amount, #C6: yetAnother}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::bool*;
}
abstract class HungryCat extends core::Object {
synthetic constructor •() → self::HungryCat*
: super core::Object::•()
;
- abstract method eatFood(core::String* food, {core::double* amount = #C5, core::double* yetAnother = #C5}) → core::bool*;
+ abstract method eatFood(core::String* food, {core::double* amount = #C4, core::double* yetAnother = #C4}) → core::bool*;
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -80,9 +80,8 @@
constants {
#C1 = #eatFood
#C2 = <core::Type*>[]
- #C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
- #C5 = null
- #C6 = #amount
- #C7 = #yetAnother
+ #C3 = <core::Symbol*, dynamic>{)
+ #C4 = null
+ #C5 = #amount
+ #C6 = #yetAnother
}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_with_different_signature.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_with_different_signature.dart.weak.outline.expect
index 70cdbd7..d7affcd 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_with_different_signature.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_with_different_signature.dart.weak.outline.expect
@@ -74,7 +74,7 @@
Extra constant evaluation status:
Evaluated: SymbolLiteral @ org-dartlang-testcase:///abstract_override_with_different_signature.dart:8:8 -> SymbolConstant(#eatFood)
Evaluated: ListLiteral @ org-dartlang-testcase:///abstract_override_with_different_signature.dart:8:8 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///abstract_override_with_different_signature.dart:8:8 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///abstract_override_with_different_signature.dart:8:8 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///abstract_override_with_different_signature.dart:23:8 -> SymbolConstant(#eatFood)
Evaluated: ListLiteral @ org-dartlang-testcase:///abstract_override_with_different_signature.dart:23:8 -> ListConstant(const <Type*>[])
Evaluated: SymbolLiteral @ org-dartlang-testcase:///abstract_override_with_different_signature.dart:23:8 -> SymbolConstant(#amount)
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_with_different_signature.dart.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_with_different_signature.dart.weak.transformed.expect
index 708efab..04f0e46 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_with_different_signature.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_override_with_different_signature.dart.weak.transformed.expect
@@ -37,7 +37,7 @@
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
no-such-method-forwarder method eatFood(core::String* food) → core::bool*
- return this.{self::MockCat::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(food)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::bool*;
+ return this.{self::MockCat::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(food)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::bool*;
}
class MockCat2 extends self::MockCat {
synthetic constructor •() → self::MockCat2*
@@ -49,21 +49,21 @@
synthetic constructor •() → self::MockCat3*
: super self::MockCat2::•()
;
- no-such-method-forwarder method eatFood(core::String* food, {core::double* amount = #C5}) → core::bool*
- return this.{self::MockCat2::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(food)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C6: amount}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::bool*;
+ no-such-method-forwarder method eatFood(core::String* food, {core::double* amount = #C4}) → core::bool*
+ return this.{self::MockCat2::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(food)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C5: amount}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::bool*;
}
class MockCat4 extends self::MockCat2 implements self::HungryCat {
synthetic constructor •() → self::MockCat4*
: super self::MockCat2::•()
;
- no-such-method-forwarder method eatFood(core::String* food, {core::double* amount = #C5, core::double* yetAnother = #C5}) → core::bool*
- return this.{self::MockCat2::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(food)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C6: amount, #C7: yetAnother}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::bool*;
+ no-such-method-forwarder method eatFood(core::String* food, {core::double* amount = #C4, core::double* yetAnother = #C4}) → core::bool*
+ return this.{self::MockCat2::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(food)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C5: amount, #C6: yetAnother}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::bool*;
}
abstract class HungryCat extends core::Object {
synthetic constructor •() → self::HungryCat*
: super core::Object::•()
;
- abstract method eatFood(core::String* food, {core::double* amount = #C5, core::double* yetAnother = #C5}) → core::bool*;
+ abstract method eatFood(core::String* food, {core::double* amount = #C4, core::double* yetAnother = #C4}) → core::bool*;
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -80,9 +80,8 @@
constants {
#C1 = #eatFood
#C2 = <core::Type*>[]
- #C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
- #C5 = null
- #C6 = #amount
- #C7 = #yetAnother
+ #C3 = <core::Symbol*, dynamic>{)
+ #C4 = null
+ #C5 = #amount
+ #C6 = #yetAnother
}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.weak.expect
index 5ca82cf..701d4d2 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.weak.expect
@@ -70,5 +70,5 @@
#C1 = #foo
#C2 = <core::Type*>[]
#C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C4 = <core::Symbol*, dynamic>{)
}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.weak.outline.expect
index d512245..ada8b9c 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.weak.outline.expect
@@ -69,5 +69,5 @@
Evaluated: SymbolLiteral @ org-dartlang-testcase:///concrete_method_over_forwarder_in_mixin_application.dart:10:3 -> SymbolConstant(#foo)
Evaluated: ListLiteral @ org-dartlang-testcase:///concrete_method_over_forwarder_in_mixin_application.dart:10:3 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///concrete_method_over_forwarder_in_mixin_application.dart:10:3 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///concrete_method_over_forwarder_in_mixin_application.dart:10:3 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///concrete_method_over_forwarder_in_mixin_application.dart:10:3 -> MapConstant(const <Symbol*, dynamic>{})
Extra constant evaluation: evaluated: 11, effectively constant: 4
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.weak.transformed.expect
index a104017..84b3825 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.weak.transformed.expect
@@ -70,5 +70,5 @@
#C1 = #foo
#C2 = <core::Type*>[]
#C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C4 = <core::Symbol*, dynamic>{)
}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.weak.expect
index daa0b7e..34d38f0 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.weak.expect
@@ -56,5 +56,5 @@
#C5 = 42
#C6 = <core::Type*>[]
#C7 = <dynamic>[]
- #C8 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C7}
+ #C8 = <core::Symbol*, dynamic>{)
}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.weak.outline.expect
index 8b928ae..846c39a 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.weak.outline.expect
@@ -38,5 +38,5 @@
Evaluated: SymbolLiteral @ org-dartlang-testcase:///default_argument_values.dart:21:10 -> SymbolConstant(#bar)
Evaluated: SymbolLiteral @ org-dartlang-testcase:///default_argument_values.dart:22:7 -> SymbolConstant(#hest)
Evaluated: ListLiteral @ org-dartlang-testcase:///default_argument_values.dart:22:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///default_argument_values.dart:22:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///default_argument_values.dart:22:7 -> MapConstant(const <Symbol*, dynamic>{})
Extra constant evaluation: evaluated: 22, effectively constant: 7
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.weak.transformed.expect
index 8ad93c0..07b72f5 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/default_argument_values.dart.weak.transformed.expect
@@ -56,5 +56,5 @@
#C5 = 42
#C6 = <core::Type*>[]
#C7 = <dynamic>[]
- #C8 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C7}
+ #C8 = <core::Symbol*, dynamic>{)
}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.weak.expect
index 3633d99..d8b80bb 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.weak.expect
@@ -58,5 +58,5 @@
#C1 = #foo
#C2 = <core::Type*>[]
#C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C4 = <core::Symbol*, dynamic>{)
}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.weak.outline.expect
index 84fb848..6ceff7c 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.weak.outline.expect
@@ -57,5 +57,5 @@
Evaluated: SymbolLiteral @ org-dartlang-testcase:///duplicated_abstract_method.dart:10:8 -> SymbolConstant(#foo)
Evaluated: ListLiteral @ org-dartlang-testcase:///duplicated_abstract_method.dart:10:8 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///duplicated_abstract_method.dart:10:8 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///duplicated_abstract_method.dart:10:8 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///duplicated_abstract_method.dart:10:8 -> MapConstant(const <Symbol*, dynamic>{})
Extra constant evaluation: evaluated: 8, effectively constant: 4
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.weak.transformed.expect
index 3633d99..d8b80bb 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.weak.transformed.expect
@@ -58,5 +58,5 @@
#C1 = #foo
#C2 = <core::Type*>[]
#C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C4 = <core::Symbol*, dynamic>{)
}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/forwarder_propagation.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/forwarder_propagation.dart.weak.expect
index d34e31b..9966f87 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/forwarder_propagation.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/forwarder_propagation.dart.weak.expect
@@ -110,7 +110,7 @@
#C2 = #bar
#C3 = <core::Type*>[]
#C4 = <dynamic>[]
- #C5 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C4}
+ #C5 = <core::Symbol*, dynamic>{)
#C6 = #baz
#C7 = #y
#C8 = #z
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/forwarder_propagation.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/forwarder_propagation.dart.weak.outline.expect
index 094b3e6..595f2f9 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/forwarder_propagation.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/forwarder_propagation.dart.weak.outline.expect
@@ -106,30 +106,30 @@
Evaluated: SymbolLiteral @ org-dartlang-testcase:///forwarder_propagation.dart:12:11 -> SymbolConstant(#bar)
Evaluated: ListLiteral @ org-dartlang-testcase:///forwarder_propagation.dart:12:11 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///forwarder_propagation.dart:12:11 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///forwarder_propagation.dart:12:11 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///forwarder_propagation.dart:12:11 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///forwarder_propagation.dart:13:8 -> SymbolConstant(#baz)
Evaluated: ListLiteral @ org-dartlang-testcase:///forwarder_propagation.dart:13:8 -> ListConstant(const <Type*>[])
Evaluated: SymbolLiteral @ org-dartlang-testcase:///forwarder_propagation.dart:13:8 -> SymbolConstant(#y)
Evaluated: SymbolLiteral @ org-dartlang-testcase:///forwarder_propagation.dart:13:8 -> SymbolConstant(#z)
Evaluated: SymbolLiteral @ org-dartlang-testcase:///forwarder_propagation.dart:11:12 -> SymbolConstant(#foo=)
Evaluated: ListLiteral @ org-dartlang-testcase:///forwarder_propagation.dart:11:12 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///forwarder_propagation.dart:11:12 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///forwarder_propagation.dart:11:12 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///forwarder_propagation_lib.dart:7:11 -> SymbolConstant(#_privateGetter)
Evaluated: ListLiteral @ org-dartlang-testcase:///forwarder_propagation_lib.dart:7:11 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///forwarder_propagation_lib.dart:7:11 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///forwarder_propagation_lib.dart:7:11 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///forwarder_propagation_lib.dart:7:11 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///forwarder_propagation_lib.dart:6:7 -> SymbolConstant(#_privateField)
Evaluated: ListLiteral @ org-dartlang-testcase:///forwarder_propagation_lib.dart:6:7 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///forwarder_propagation_lib.dart:6:7 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///forwarder_propagation_lib.dart:6:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///forwarder_propagation_lib.dart:6:7 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///forwarder_propagation_lib.dart:9:8 -> SymbolConstant(#_privateMethod)
Evaluated: ListLiteral @ org-dartlang-testcase:///forwarder_propagation_lib.dart:9:8 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///forwarder_propagation_lib.dart:9:8 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///forwarder_propagation_lib.dart:9:8 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///forwarder_propagation_lib.dart:9:8 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///forwarder_propagation_lib.dart:8:12 -> SymbolConstant(#_privateSetter=)
Evaluated: ListLiteral @ org-dartlang-testcase:///forwarder_propagation_lib.dart:8:12 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///forwarder_propagation_lib.dart:8:12 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///forwarder_propagation_lib.dart:8:12 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///forwarder_propagation_lib.dart:6:7 -> SymbolConstant(#_privateField=)
Evaluated: ListLiteral @ org-dartlang-testcase:///forwarder_propagation_lib.dart:6:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///forwarder_propagation_lib.dart:6:7 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///forwarder_propagation_lib.dart:6:7 -> MapConstant(const <Symbol*, dynamic>{})
Extra constant evaluation: evaluated: 79, effectively constant: 29
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/forwarder_propagation.dart.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/forwarder_propagation.dart.weak.transformed.expect
index a9d34c1..184900a 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/forwarder_propagation.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/forwarder_propagation.dart.weak.transformed.expect
@@ -110,7 +110,7 @@
#C2 = #bar
#C3 = <core::Type*>[]
#C4 = <dynamic>[]
- #C5 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C4}
+ #C5 = <core::Symbol*, dynamic>{)
#C6 = #baz
#C7 = #y
#C8 = #z
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.weak.expect
index d1335fe..ae8492b 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.weak.expect
@@ -65,5 +65,5 @@
#C1 = #foo
#C2 = <core::Type*>[]
#C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C4 = <core::Symbol*, dynamic>{)
}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.weak.outline.expect
index 50e7958..59617d9 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.weak.outline.expect
@@ -64,9 +64,9 @@
Evaluated: SymbolLiteral @ org-dartlang-testcase:///forwarders_not_assumed_from_mixin.dart:10:8 -> SymbolConstant(#foo)
Evaluated: ListLiteral @ org-dartlang-testcase:///forwarders_not_assumed_from_mixin.dart:10:8 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///forwarders_not_assumed_from_mixin.dart:10:8 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///forwarders_not_assumed_from_mixin.dart:10:8 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///forwarders_not_assumed_from_mixin.dart:10:8 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///forwarders_not_assumed_from_mixin.dart:10:8 -> SymbolConstant(#foo)
Evaluated: ListLiteral @ org-dartlang-testcase:///forwarders_not_assumed_from_mixin.dart:10:8 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///forwarders_not_assumed_from_mixin.dart:10:8 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///forwarders_not_assumed_from_mixin.dart:10:8 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///forwarders_not_assumed_from_mixin.dart:10:8 -> MapConstant(const <Symbol*, dynamic>{})
Extra constant evaluation: evaluated: 18, effectively constant: 8
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.weak.transformed.expect
index 34cb10d..3500cab 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.weak.transformed.expect
@@ -65,5 +65,5 @@
#C1 = #foo
#C2 = <core::Type*>[]
#C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C4 = <core::Symbol*, dynamic>{)
}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.weak.expect
index c296d8d..fc7e726 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.weak.expect
@@ -48,5 +48,5 @@
#C1 = #foo
#C2 = <core::Type*>[]
#C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C4 = <core::Symbol*, dynamic>{)
}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.weak.outline.expect
index a80f440..ee28386 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.weak.outline.expect
@@ -47,5 +47,5 @@
Evaluated: SymbolLiteral @ org-dartlang-testcase:///interface_with_concrete.dart:16:8 -> SymbolConstant(#foo)
Evaluated: ListLiteral @ org-dartlang-testcase:///interface_with_concrete.dart:16:8 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///interface_with_concrete.dart:16:8 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///interface_with_concrete.dart:16:8 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///interface_with_concrete.dart:16:8 -> MapConstant(const <Symbol*, dynamic>{})
Extra constant evaluation: evaluated: 8, effectively constant: 4
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.weak.transformed.expect
index c296d8d..fc7e726 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_concrete.dart.weak.transformed.expect
@@ -48,5 +48,5 @@
#C1 = #foo
#C2 = <core::Type*>[]
#C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C4 = <core::Symbol*, dynamic>{)
}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.weak.expect
index 11b038f..6d19094 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.weak.expect
@@ -88,5 +88,5 @@
#C1 = #foo
#C2 = <core::Type*>[]
#C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C4 = <core::Symbol*, dynamic>{)
}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.weak.outline.expect
index 1e32f6d..a3f5875 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.weak.outline.expect
@@ -86,13 +86,13 @@
Evaluated: SymbolLiteral @ org-dartlang-testcase:///interface_with_nsm.dart:15:8 -> SymbolConstant(#foo)
Evaluated: ListLiteral @ org-dartlang-testcase:///interface_with_nsm.dart:15:8 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///interface_with_nsm.dart:15:8 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///interface_with_nsm.dart:15:8 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///interface_with_nsm.dart:15:8 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///interface_with_nsm.dart:15:8 -> SymbolConstant(#foo)
Evaluated: ListLiteral @ org-dartlang-testcase:///interface_with_nsm.dart:15:8 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///interface_with_nsm.dart:15:8 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///interface_with_nsm.dart:15:8 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///interface_with_nsm.dart:15:8 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///interface_with_nsm.dart:15:8 -> SymbolConstant(#foo)
Evaluated: ListLiteral @ org-dartlang-testcase:///interface_with_nsm.dart:15:8 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///interface_with_nsm.dart:15:8 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///interface_with_nsm.dart:15:8 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///interface_with_nsm.dart:15:8 -> MapConstant(const <Symbol*, dynamic>{})
Extra constant evaluation: evaluated: 28, effectively constant: 12
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.weak.transformed.expect
index f59813d..2f2d023 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.weak.transformed.expect
@@ -88,5 +88,5 @@
#C1 = #foo
#C2 = <core::Type*>[]
#C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C4 = <core::Symbol*, dynamic>{)
}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/multiple_abstract_setters.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/multiple_abstract_setters.dart.weak.expect
index dabbcd8..8c67697 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/multiple_abstract_setters.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/multiple_abstract_setters.dart.weak.expect
@@ -82,6 +82,6 @@
#C1 = #bar
#C2 = <core::Type*>[]
#C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C4 = <core::Symbol*, dynamic>{)
#C5 = #foo=
}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/multiple_abstract_setters.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/multiple_abstract_setters.dart.weak.outline.expect
index fd16e8c42..18495ea 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/multiple_abstract_setters.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/multiple_abstract_setters.dart.weak.outline.expect
@@ -83,8 +83,8 @@
Evaluated: SymbolLiteral @ org-dartlang-testcase:///multiple_abstract_setters.dart:17:12 -> SymbolConstant(#bar)
Evaluated: ListLiteral @ org-dartlang-testcase:///multiple_abstract_setters.dart:17:12 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///multiple_abstract_setters.dart:17:12 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///multiple_abstract_setters.dart:17:12 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///multiple_abstract_setters.dart:17:12 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///multiple_abstract_setters.dart:16:12 -> SymbolConstant(#foo=)
Evaluated: ListLiteral @ org-dartlang-testcase:///multiple_abstract_setters.dart:16:12 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///multiple_abstract_setters.dart:16:12 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///multiple_abstract_setters.dart:16:12 -> MapConstant(const <Symbol*, dynamic>{})
Extra constant evaluation: evaluated: 19, effectively constant: 7
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/multiple_abstract_setters.dart.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/multiple_abstract_setters.dart.weak.transformed.expect
index 6b924bd..b44b511 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/multiple_abstract_setters.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/multiple_abstract_setters.dart.weak.transformed.expect
@@ -82,6 +82,6 @@
#C1 = #bar
#C2 = <core::Type*>[]
#C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C4 = <core::Symbol*, dynamic>{)
#C5 = #foo=
}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.weak.expect
index 70c94e6..d2fa4dd 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.weak.expect
@@ -32,5 +32,5 @@
#C1 = #foo
#C2 = <core::Type*>[]
#C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C4 = <core::Symbol*, dynamic>{)
}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.weak.outline.expect
index 19eb325..3a87a23 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.weak.outline.expect
@@ -32,5 +32,5 @@
Evaluated: SymbolLiteral @ org-dartlang-testcase:///no_forwarders_for_abstract_classes.dart:13:8 -> SymbolConstant(#foo)
Evaluated: ListLiteral @ org-dartlang-testcase:///no_forwarders_for_abstract_classes.dart:13:8 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///no_forwarders_for_abstract_classes.dart:13:8 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///no_forwarders_for_abstract_classes.dart:13:8 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///no_forwarders_for_abstract_classes.dart:13:8 -> MapConstant(const <Symbol*, dynamic>{})
Extra constant evaluation: evaluated: 8, effectively constant: 4
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.weak.transformed.expect
index 70c94e6..d2fa4dd 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes.dart.weak.transformed.expect
@@ -32,5 +32,5 @@
#C1 = #foo
#C2 = <core::Type*>[]
#C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C4 = <core::Symbol*, dynamic>{)
}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.weak.expect
index 3d97e3b..c2f527e 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.weak.expect
@@ -42,5 +42,5 @@
#C1 = #foo
#C2 = <core::Type*>[]
#C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C4 = <core::Symbol*, dynamic>{)
}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.weak.outline.expect
index dfa0b76..d402380 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.weak.outline.expect
@@ -40,5 +40,5 @@
Evaluated: SymbolLiteral @ org-dartlang-testcase:///no_forwarders_for_abstract_classes_chain.dart:14:8 -> SymbolConstant(#foo)
Evaluated: ListLiteral @ org-dartlang-testcase:///no_forwarders_for_abstract_classes_chain.dart:14:8 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///no_forwarders_for_abstract_classes_chain.dart:14:8 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///no_forwarders_for_abstract_classes_chain.dart:14:8 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///no_forwarders_for_abstract_classes_chain.dart:14:8 -> MapConstant(const <Symbol*, dynamic>{})
Extra constant evaluation: evaluated: 8, effectively constant: 4
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.weak.transformed.expect
index 3d97e3b..c2f527e 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/no_forwarders_for_abstract_classes_chain.dart.weak.transformed.expect
@@ -42,5 +42,5 @@
#C1 = #foo
#C2 = <core::Type*>[]
#C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C4 = <core::Symbol*, dynamic>{)
}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.weak.expect
index 10936ab..fadd73d 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.weak.expect
@@ -23,13 +23,12 @@
: super self::M::•()
;
no-such-method-forwarder method call(core::String* s) → void
- return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[s]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+ return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(<dynamic>[s]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation*) →* dynamic};
}
static method main() → dynamic {}
constants {
#C1 = #call
#C2 = <core::Type*>[]
- #C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C3 = <core::Symbol*, dynamic>{)
}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.weak.outline.expect
index 568adcd..7d0e3bc 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.weak.outline.expect
@@ -30,5 +30,5 @@
Extra constant evaluation status:
Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_inherited.dart:13:8 -> SymbolConstant(#call)
Evaluated: ListLiteral @ org-dartlang-testcase:///nsm_inherited.dart:13:8 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///nsm_inherited.dart:13:8 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///nsm_inherited.dart:13:8 -> MapConstant(const <Symbol*, dynamic>{})
Extra constant evaluation: evaluated: 10, effectively constant: 3
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.weak.transformed.expect
index 1562403..2d67bde 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/nsm_inherited.dart.weak.transformed.expect
@@ -23,13 +23,12 @@
: super self::M::•()
;
no-such-method-forwarder method call(core::String* s) → void
- return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(s)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+ return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(s)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation*) →* dynamic};
}
static method main() → dynamic {}
constants {
#C1 = #call
#C2 = <core::Type*>[]
- #C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C3 = <core::Symbol*, dynamic>{)
}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.weak.expect
index 6c574dd..a59d331 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.weak.expect
@@ -48,5 +48,5 @@
#C1 = #foo
#C2 = <core::Type*>[]
#C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C4 = <core::Symbol*, dynamic>{)
}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.weak.outline.expect
index 7e408bc..e712ddfd 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.weak.outline.expect
@@ -47,5 +47,5 @@
Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_mixed_in.dart:15:8 -> SymbolConstant(#foo)
Evaluated: ListLiteral @ org-dartlang-testcase:///nsm_mixed_in.dart:15:8 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///nsm_mixed_in.dart:15:8 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///nsm_mixed_in.dart:15:8 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///nsm_mixed_in.dart:15:8 -> MapConstant(const <Symbol*, dynamic>{})
Extra constant evaluation: evaluated: 10, effectively constant: 4
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.weak.transformed.expect
index 2b5bfe3..cb0867c 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.weak.transformed.expect
@@ -49,5 +49,5 @@
#C1 = #foo
#C2 = <core::Type*>[]
#C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C4 = <core::Symbol*, dynamic>{)
}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/private.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/private.dart.weak.expect
index fe2544d..00429c3 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/private.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/private.dart.weak.expect
@@ -65,5 +65,5 @@
#C1 = #org-dartlang-testcase:///private.dart::_hest
#C2 = <core::Type*>[]
#C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C4 = <core::Symbol*, dynamic>{)
}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/private.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/private.dart.weak.outline.expect
index 0808248..f92373e 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/private.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/private.dart.weak.outline.expect
@@ -64,9 +64,9 @@
Evaluated: SymbolLiteral @ org-dartlang-testcase:///private_module.dart:11:8 -> SymbolConstant(#_hest)
Evaluated: ListLiteral @ org-dartlang-testcase:///private_module.dart:11:8 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///private_module.dart:11:8 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///private_module.dart:11:8 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///private_module.dart:11:8 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///private_module.dart:11:8 -> SymbolConstant(#_hest)
Evaluated: ListLiteral @ org-dartlang-testcase:///private_module.dart:11:8 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///private_module.dart:11:8 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///private_module.dart:11:8 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///private_module.dart:11:8 -> MapConstant(const <Symbol*, dynamic>{})
Extra constant evaluation: evaluated: 16, effectively constant: 8
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/private.dart.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/private.dart.weak.transformed.expect
index fe2544d..00429c3 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/private.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/private.dart.weak.transformed.expect
@@ -65,5 +65,5 @@
#C1 = #org-dartlang-testcase:///private.dart::_hest
#C2 = <core::Type*>[]
#C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C4 = <core::Symbol*, dynamic>{)
}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.weak.expect
index ed53431..3a2ae93 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.weak.expect
@@ -33,5 +33,5 @@
#C1 = #org-dartlang-testcase:///private_same.dart::_foo
#C2 = <core::Type*>[]
#C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C4 = <core::Symbol*, dynamic>{)
}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.weak.outline.expect
index 0dd40c8..29e4137 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.weak.outline.expect
@@ -33,5 +33,5 @@
Evaluated: SymbolLiteral @ org-dartlang-testcase:///private_same.dart:10:8 -> SymbolConstant(#_foo)
Evaluated: ListLiteral @ org-dartlang-testcase:///private_same.dart:10:8 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///private_same.dart:10:8 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///private_same.dart:10:8 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///private_same.dart:10:8 -> MapConstant(const <Symbol*, dynamic>{})
Extra constant evaluation: evaluated: 8, effectively constant: 4
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.weak.transformed.expect
index ed53431..3a2ae93 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/private_same.dart.weak.transformed.expect
@@ -33,5 +33,5 @@
#C1 = #org-dartlang-testcase:///private_same.dart::_foo
#C2 = <core::Type*>[]
#C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C4 = <core::Symbol*, dynamic>{)
}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/same.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/same.dart.weak.expect
index 864895d..51c933a 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/same.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/same.dart.weak.expect
@@ -27,5 +27,5 @@
#C1 = #foo
#C2 = <core::Type*>[]
#C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C4 = <core::Symbol*, dynamic>{)
}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/same.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/same.dart.weak.outline.expect
index 98fba7e..e2c2872 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/same.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/same.dart.weak.outline.expect
@@ -27,5 +27,5 @@
Evaluated: SymbolLiteral @ org-dartlang-testcase:///same.dart:14:8 -> SymbolConstant(#foo)
Evaluated: ListLiteral @ org-dartlang-testcase:///same.dart:14:8 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///same.dart:14:8 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///same.dart:14:8 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///same.dart:14:8 -> MapConstant(const <Symbol*, dynamic>{})
Extra constant evaluation: evaluated: 8, effectively constant: 4
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/same.dart.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/same.dart.weak.transformed.expect
index 864895d..51c933a 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/same.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/same.dart.weak.transformed.expect
@@ -27,5 +27,5 @@
#C1 = #foo
#C2 = <core::Type*>[]
#C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C4 = <core::Symbol*, dynamic>{)
}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.weak.expect
index 938f3bd..8a8122f 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.weak.expect
@@ -18,7 +18,7 @@
;
method foo(core::int* x) → void {}
no-such-method-forwarder set foo(core::int* x) → void
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[x]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation*) →* dynamic};
method noSuchMethod(core::Invocation* i) → dynamic
return null;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
@@ -36,6 +36,5 @@
constants {
#C1 = #foo=
#C2 = <core::Type*>[]
- #C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C3 = <core::Symbol*, dynamic>{)
}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.weak.outline.expect
index 5bae423..c7f32f0 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.weak.outline.expect
@@ -38,5 +38,5 @@
Extra constant evaluation status:
Evaluated: SymbolLiteral @ org-dartlang-testcase:///setter_not_shadowed_by_method.dart:12:12 -> SymbolConstant(#foo=)
Evaluated: ListLiteral @ org-dartlang-testcase:///setter_not_shadowed_by_method.dart:12:12 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///setter_not_shadowed_by_method.dart:12:12 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///setter_not_shadowed_by_method.dart:12:12 -> MapConstant(const <Symbol*, dynamic>{})
Extra constant evaluation: evaluated: 10, effectively constant: 3
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.weak.transformed.expect
index 20c7622..a9f095f 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.weak.transformed.expect
@@ -18,7 +18,7 @@
;
method foo(core::int* x) → void {}
no-such-method-forwarder set foo(core::int* x) → void
- return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(x)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+ return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(x)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C3))){(core::Invocation*) →* dynamic};
method noSuchMethod(core::Invocation* i) → dynamic
return null;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
@@ -36,6 +36,5 @@
constants {
#C1 = #foo=
#C2 = <core::Type*>[]
- #C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C3 = <core::Symbol*, dynamic>{)
}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.weak.expect b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.weak.expect
index 24d4686..8314ecf 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.weak.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.weak.expect
@@ -64,5 +64,5 @@
#C1 = #foo
#C2 = <core::Type*>[]
#C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C4 = <core::Symbol*, dynamic>{)
}
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.weak.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.weak.outline.expect
index ca3cde3..037de6a 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.weak.outline.expect
@@ -62,5 +62,5 @@
Evaluated: SymbolLiteral @ org-dartlang-testcase:///subst_on_forwarder.dart:10:5 -> SymbolConstant(#foo)
Evaluated: ListLiteral @ org-dartlang-testcase:///subst_on_forwarder.dart:10:5 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///subst_on_forwarder.dart:10:5 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///subst_on_forwarder.dart:10:5 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///subst_on_forwarder.dart:10:5 -> MapConstant(const <Symbol*, dynamic>{})
Extra constant evaluation: evaluated: 11, effectively constant: 4
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.weak.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.weak.transformed.expect
index d830d60..cc8da4c 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.weak.transformed.expect
@@ -65,5 +65,5 @@
#C1 = #foo
#C2 = <core::Type*>[]
#C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C4 = <core::Symbol*, dynamic>{)
}
diff --git a/pkg/front_end/testcases/variance/generic_covariance_sound_variance.dart.weak.expect b/pkg/front_end/testcases/variance/generic_covariance_sound_variance.dart.weak.expect
index e7ce2ad..cb41c43 100644
--- a/pkg/front_end/testcases/variance/generic_covariance_sound_variance.dart.weak.expect
+++ b/pkg/front_end/testcases/variance/generic_covariance_sound_variance.dart.weak.expect
@@ -121,7 +121,7 @@
#C2 = #x
#C3 = <core::Type*>[]
#C4 = <dynamic>[]
- #C5 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C4}
+ #C5 = <core::Symbol*, dynamic>{)
#C6 = #method
#C7 = #y=
#C8 = #x=
diff --git a/pkg/front_end/testcases/variance/generic_covariance_sound_variance.dart.weak.outline.expect b/pkg/front_end/testcases/variance/generic_covariance_sound_variance.dart.weak.outline.expect
index ae0d389..dc78628 100644
--- a/pkg/front_end/testcases/variance/generic_covariance_sound_variance.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/variance/generic_covariance_sound_variance.dart.weak.outline.expect
@@ -91,14 +91,14 @@
Evaluated: SymbolLiteral @ org-dartlang-testcase:///generic_covariance_sound_variance.dart:22:6 -> SymbolConstant(#x)
Evaluated: ListLiteral @ org-dartlang-testcase:///generic_covariance_sound_variance.dart:22:6 -> ListConstant(const <Type*>[])
Evaluated: ListLiteral @ org-dartlang-testcase:///generic_covariance_sound_variance.dart:22:6 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///generic_covariance_sound_variance.dart:22:6 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///generic_covariance_sound_variance.dart:22:6 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///generic_covariance_sound_variance.dart:23:5 -> SymbolConstant(#method)
Evaluated: ListLiteral @ org-dartlang-testcase:///generic_covariance_sound_variance.dart:23:5 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///generic_covariance_sound_variance.dart:23:5 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///generic_covariance_sound_variance.dart:23:5 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///generic_covariance_sound_variance.dart:24:12 -> SymbolConstant(#y=)
Evaluated: ListLiteral @ org-dartlang-testcase:///generic_covariance_sound_variance.dart:24:12 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///generic_covariance_sound_variance.dart:24:12 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///generic_covariance_sound_variance.dart:24:12 -> MapConstant(const <Symbol*, dynamic>{})
Evaluated: SymbolLiteral @ org-dartlang-testcase:///generic_covariance_sound_variance.dart:22:6 -> SymbolConstant(#x=)
Evaluated: ListLiteral @ org-dartlang-testcase:///generic_covariance_sound_variance.dart:22:6 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///generic_covariance_sound_variance.dart:22:6 -> InstanceConstant(const _ImmutableMap<Symbol*, dynamic>{_ImmutableMap._kvPairs: const <dynamic>[]})
+Evaluated: MapLiteral @ org-dartlang-testcase:///generic_covariance_sound_variance.dart:22:6 -> MapConstant(const <Symbol*, dynamic>{})
Extra constant evaluation: evaluated: 42, effectively constant: 13
diff --git a/pkg/front_end/testcases/variance/generic_covariance_sound_variance.dart.weak.transformed.expect b/pkg/front_end/testcases/variance/generic_covariance_sound_variance.dart.weak.transformed.expect
index 5346fee6..3b09c95 100644
--- a/pkg/front_end/testcases/variance/generic_covariance_sound_variance.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/variance/generic_covariance_sound_variance.dart.weak.transformed.expect
@@ -121,7 +121,7 @@
#C2 = #x
#C3 = <core::Type*>[]
#C4 = <dynamic>[]
- #C5 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C4}
+ #C5 = <core::Symbol*, dynamic>{)
#C6 = #method
#C7 = #y=
#C8 = #x=
diff --git a/pkg/kernel/lib/target/targets.dart b/pkg/kernel/lib/target/targets.dart
index 479f222..82718b5 100644
--- a/pkg/kernel/lib/target/targets.dart
+++ b/pkg/kernel/lib/target/targets.dart
@@ -438,6 +438,8 @@
Class? concreteMapLiteralClass(CoreTypes coreTypes) => null;
Class? concreteConstMapLiteralClass(CoreTypes coreTypes) => null;
+ Class? concreteSetLiteralClass(CoreTypes coreTypes) => null;
+ Class? concreteConstSetLiteralClass(CoreTypes coreTypes) => null;
Class? concreteIntLiteralClass(CoreTypes coreTypes, int value) => null;
Class? concreteDoubleLiteralClass(CoreTypes coreTypes, double value) => null;
diff --git a/pkg/kernel/lib/vm/constants_native_effects.dart b/pkg/kernel/lib/vm/constants_native_effects.dart
deleted file mode 100644
index 911f2cc..0000000
--- a/pkg/kernel/lib/vm/constants_native_effects.dart
+++ /dev/null
@@ -1,117 +0,0 @@
-// Copyright (c) 2017, 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 vm.constants_native_effects;
-
-import '../ast.dart';
-import '../target/targets.dart';
-import '../core_types.dart';
-
-class VmConstantsBackend extends ConstantsBackend {
- final Class immutableMapClass;
- final Class unmodifiableSetClass;
- final Field unmodifiableSetMap;
-
- VmConstantsBackend._(this.immutableMapClass, this.unmodifiableSetMap,
- this.unmodifiableSetClass);
-
- /// If [defines] is not `null` it will be used for handling
- /// `const {bool,...}.fromEnvironment()` otherwise the current VM's values
- /// will be used.
- factory VmConstantsBackend(CoreTypes coreTypes) {
- final Library coreLibrary = coreTypes.coreLibrary;
- final Class immutableMapClass = coreLibrary.classes
- .firstWhere((Class klass) => klass.name == '_ImmutableMap');
- // ignore: unnecessary_null_comparison
- assert(immutableMapClass != null);
- Field unmodifiableSetMap =
- coreTypes.index.getField('dart:collection', '_UnmodifiableSet', '_map');
-
- return new VmConstantsBackend._(immutableMapClass, unmodifiableSetMap,
- unmodifiableSetMap.enclosingClass!);
- }
-
- @override
- Constant lowerMapConstant(MapConstant constant) {
- // The _ImmutableMap class is implemented via one field pointing to a list
- // of key/value pairs -- see runtime/lib/immutable_map.dart!
- final List<Constant> kvListPairs =
- new List<Constant>.generate(2 * constant.entries.length, (int i) {
- final int index = i ~/ 2;
- final ConstantMapEntry entry = constant.entries[index];
- return i % 2 == 0 ? entry.key : entry.value;
- });
- // This is a bit fishy, since we merge the key and the value type by
- // putting both into the same list.
- final ListConstant kvListConstant =
- new ListConstant(const DynamicType(), kvListPairs);
- assert(immutableMapClass.fields.length == 1);
- final Field kvPairListField = immutableMapClass.fields[0];
- return new InstanceConstant(immutableMapClass.reference, <DartType>[
- constant.keyType,
- constant.valueType,
- ], <Reference, Constant>{
- // We use getterReference as we refer to the field itself.
- kvPairListField.getterReference: kvListConstant,
- });
- }
-
- @override
- bool isLoweredMapConstant(Constant constant) {
- return constant is InstanceConstant &&
- constant.classNode == immutableMapClass;
- }
-
- @override
- void forEachLoweredMapConstantEntry(
- Constant constant, void Function(Constant key, Constant value) f) {
- assert(isLoweredMapConstant(constant));
- final InstanceConstant instance = constant as InstanceConstant;
- assert(immutableMapClass.fields.length == 1);
- final Field kvPairListField = immutableMapClass.fields[0];
- final ListConstant kvListConstant =
- instance.fieldValues[kvPairListField.getterReference] as ListConstant;
- assert(kvListConstant.entries.length % 2 == 0);
- for (int index = 0; index < kvListConstant.entries.length; index += 2) {
- f(kvListConstant.entries[index], kvListConstant.entries[index + 1]);
- }
- }
-
- @override
- Constant lowerSetConstant(SetConstant constant) {
- final DartType elementType = constant.typeArgument;
- final List<Constant> entries = constant.entries;
- final List<ConstantMapEntry> mapEntries =
- new List<ConstantMapEntry>.generate(entries.length, (int index) {
- return new ConstantMapEntry(entries[index], new NullConstant());
- });
- Constant map = lowerMapConstant(
- new MapConstant(elementType, const NullType(), mapEntries));
- return new InstanceConstant(unmodifiableSetClass.reference, [elementType],
- <Reference, Constant>{unmodifiableSetMap.getterReference: map});
- }
-
- @override
- bool isLoweredSetConstant(Constant constant) {
- if (constant is InstanceConstant &&
- constant.classNode == unmodifiableSetClass) {
- InstanceConstant instance = constant;
- return isLoweredMapConstant(
- instance.fieldValues[unmodifiableSetMap.getterReference]!);
- }
- return false;
- }
-
- @override
- void forEachLoweredSetConstantElement(
- Constant constant, void Function(Constant element) f) {
- assert(isLoweredSetConstant(constant));
- final InstanceConstant instance = constant as InstanceConstant;
- final Constant mapConstant =
- instance.fieldValues[unmodifiableSetMap.getterReference]!;
- forEachLoweredMapConstantEntry(mapConstant, (Constant key, Constant value) {
- f(key);
- });
- }
-}
diff --git a/pkg/vm/lib/target/vm.dart b/pkg/vm/lib/target/vm.dart
index 5847891..079aca9 100644
--- a/pkg/vm/lib/target/vm.dart
+++ b/pkg/vm/lib/target/vm.dart
@@ -14,8 +14,6 @@
import 'package:kernel/transformations/continuation.dart' as transformAsync
show transformLibraries, transformProcedure;
import 'package:kernel/type_environment.dart';
-import 'package:kernel/vm/constants_native_effects.dart'
- show VmConstantsBackend;
import '../transformations/call_site_annotator.dart' as callSiteAnnotator;
import '../transformations/lowering.dart' as lowering
@@ -34,8 +32,10 @@
Class? _growableList;
Class? _immutableList;
+ Class? _internalImmutableLinkedHashMap;
+ Class? _internalImmutableLinkedHashSet;
Class? _internalLinkedHashMap;
- Class? _immutableMap;
+ Class? _internalLinkedHashSet;
Class? _oneByteString;
Class? _twoByteString;
Class? _smi;
@@ -439,8 +439,20 @@
@override
Class concreteConstMapLiteralClass(CoreTypes coreTypes) {
- return _immutableMap ??=
- coreTypes.index.getClass('dart:core', '_ImmutableMap');
+ return _internalImmutableLinkedHashMap ??= coreTypes.index
+ .getClass('dart:collection', '_InternalImmutableLinkedHashMap');
+ }
+
+ @override
+ Class concreteSetLiteralClass(CoreTypes coreTypes) {
+ return _internalLinkedHashSet ??=
+ coreTypes.index.getClass('dart:collection', '_CompactLinkedHashSet');
+ }
+
+ @override
+ Class concreteConstSetLiteralClass(CoreTypes coreTypes) {
+ return _internalImmutableLinkedHashSet ??= coreTypes.index
+ .getClass('dart:collection', '_CompactImmutableLinkedHashSet');
}
@override
@@ -476,8 +488,7 @@
}
@override
- ConstantsBackend constantsBackend(CoreTypes coreTypes) =>
- new VmConstantsBackend(coreTypes);
+ ConstantsBackend constantsBackend(CoreTypes coreTypes) => ConstantsBackend();
@override
Map<String, String> updateEnvironmentDefines(Map<String, String> map) {
diff --git a/pkg/vm/lib/transformations/type_flow/summary_collector.dart b/pkg/vm/lib/transformations/type_flow/summary_collector.dart
index de63cee..49ce917 100644
--- a/pkg/vm/lib/transformations/type_flow/summary_collector.dart
+++ b/pkg/vm/lib/transformations/type_flow/summary_collector.dart
@@ -1584,6 +1584,21 @@
}
@override
+ TypeExpr visitSetLiteral(SetLiteral node) {
+ for (var expression in node.expressions) {
+ _visit(expression);
+ }
+ Class? concreteClass =
+ target.concreteSetLiteralClass(_environment.coreTypes);
+ if (concreteClass != null) {
+ return _translator.instantiateConcreteType(
+ _entryPointsListener.addAllocatedClass(concreteClass),
+ [node.typeArgument]);
+ }
+ return _staticType(node);
+ }
+
+ @override
TypeExpr visitInstanceInvocation(InstanceInvocation node) {
final receiverNode = node.receiver;
final receiver = _visit(receiverNode);
@@ -2443,11 +2458,6 @@
}
@override
- Type visitMapConstant(MapConstant node) {
- throw 'The kernel2kernel constants transformation desugars const maps!';
- }
-
- @override
Type visitListConstant(ListConstant constant) {
for (final Constant entry in constant.entries) {
typeFor(entry);
@@ -2466,6 +2476,43 @@
}
@override
+ Type visitMapConstant(MapConstant constant) {
+ for (final entry in constant.entries) {
+ typeFor(entry.key);
+ typeFor(entry.value);
+ }
+ final Class? concreteClass = summaryCollector.target
+ .concreteConstMapLiteralClass(summaryCollector._environment.coreTypes);
+ if (concreteClass != null) {
+ return new ConcreteType(
+ summaryCollector._entryPointsListener
+ .addAllocatedClass(concreteClass)
+ .cls,
+ null,
+ constant);
+ }
+ return _getStaticType(constant);
+ }
+
+ @override
+ Type visitSetConstant(SetConstant constant) {
+ for (final entry in constant.entries) {
+ typeFor(entry);
+ }
+ final Class? concreteClass = summaryCollector.target
+ .concreteConstSetLiteralClass(summaryCollector._environment.coreTypes);
+ if (concreteClass != null) {
+ return new ConcreteType(
+ summaryCollector._entryPointsListener
+ .addAllocatedClass(concreteClass)
+ .cls,
+ null,
+ constant);
+ }
+ return _getStaticType(constant);
+ }
+
+ @override
Type visitInstanceConstant(InstanceConstant constant) {
final resultClass = summaryCollector._entryPointsListener
.addAllocatedClass(constant.classNode);
diff --git a/pkg/vm/lib/transformations/type_flow/transformer.dart b/pkg/vm/lib/transformations/type_flow/transformer.dart
index 5634a76..2ed3a8e 100644
--- a/pkg/vm/lib/transformations/type_flow/transformer.dart
+++ b/pkg/vm/lib/transformations/type_flow/transformer.dart
@@ -1906,6 +1906,13 @@
visitDoubleConstant(DoubleConstant constant) {}
@override
+ visitSetConstant(SetConstant constant) {
+ for (final entry in constant.entries) {
+ analyzeConstant(entry);
+ }
+ }
+
+ @override
visitStringConstant(StringConstant constant) {}
@override
@@ -1914,8 +1921,11 @@
}
@override
- visitMapConstant(MapConstant node) {
- throw 'The kernel2kernel constants transformation desugars const maps!';
+ visitMapConstant(MapConstant constant) {
+ for (final entry in constant.entries) {
+ analyzeConstant(entry.key);
+ analyzeConstant(entry.value);
+ }
}
@override
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/const_map.dart b/pkg/vm/testcases/transformations/type_flow/transformer/const_map.dart
new file mode 100644
index 0000000..88695c5
--- /dev/null
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/const_map.dart
@@ -0,0 +1,33 @@
+// Copyright (c) 2021, 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.
+
+// This test verifies correct type assignment of type to const maps.
+
+enum _AttributeName {
+ name,
+ sibling,
+}
+
+const _attributeNames = <int, _AttributeName>{
+ 0x01: _AttributeName.sibling,
+ 0x03: _AttributeName.name,
+};
+
+class _Attribute {
+ final _AttributeName name;
+
+ // This should not be thrown away by TFA.
+ _Attribute._(this.name);
+
+ static _Attribute fromReader(int nameInt) {
+ final name = _attributeNames[nameInt]!;
+ return _Attribute._(name);
+ }
+}
+
+void main() {
+ final result = _Attribute.fromReader(1);
+
+ print(result);
+}
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/const_map.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/const_map.dart.expect
new file mode 100644
index 0000000..d8e86e2
--- /dev/null
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/const_map.dart.expect
@@ -0,0 +1,33 @@
+library #lib /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class _AttributeName extends core::Object implements core::Enum /*isEnum*/ {
+[@vm.inferred-type.metadata=dart.core::_Smi] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:1] [@vm.unboxing-info.metadata=()->i] final field core::int index;
+[@vm.inferred-type.metadata=dart.core::_OneByteString] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:2] final field core::String _name;
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4] method toString() → core::String
+ return [@vm.direct-call.metadata=#lib::_AttributeName._name] [@vm.inferred-type.metadata=dart.core::_OneByteString] this.{self::_AttributeName::_name}{core::String};
+}
+class _Attribute extends core::Object {
+ constructor _() → self::_Attribute
+ : super core::Object::•()
+ ;
+ static method fromReader() → self::_Attribute {
+ final self::_AttributeName name = [@vm.direct-call.metadata=dart.collection::_InternalImmutableLinkedHashMap.[]] [@vm.inferred-type.metadata=#lib::_AttributeName? (skip check)](#C8).{core::Map::[]}(#C1){(core::Object?) → self::_AttributeName?}!;
+ return new self::_Attribute::_();
+ }
+}
+static method main() → void {
+ final self::_Attribute result = [@vm.inferred-type.metadata=#lib::_Attribute] self::_Attribute::fromReader();
+ core::print(result);
+}
+constants {
+ #C1 = 1
+ #C2 = "_AttributeName.sibling"
+ #C3 = self::_AttributeName {index:#C1, _name:#C2}
+ #C4 = 3
+ #C5 = 0
+ #C6 = "_AttributeName.name"
+ #C7 = self::_AttributeName {index:#C5, _name:#C6}
+ #C8 = <core::int*, self::_AttributeName*>{#C1:#C3, #C4:#C7)
+}
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/const_set.dart b/pkg/vm/testcases/transformations/type_flow/transformer/const_set.dart
new file mode 100644
index 0000000..e0771ee
--- /dev/null
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/const_set.dart
@@ -0,0 +1,36 @@
+// Copyright (c) 2021, 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.
+
+// This test verifies correct type assignment of type to const sets.
+
+enum _AttributeName {
+ name,
+ sibling,
+}
+
+const _attributeNames = <int>{
+ 0x00,
+ 0x01,
+};
+
+class _Attribute {
+ final _AttributeName name;
+
+ // This should not be thrown away by TFA.
+ _Attribute._(this.name);
+
+ static _Attribute fromReader(int nameInt) {
+ final name = _attributeNames.contains(nameInt);
+
+ // This should not be transformed into
+ // "Attempt to execute code removed by Dart AOT compiler".
+ return _Attribute._(_AttributeName.values[nameInt]);
+ }
+}
+
+void main() {
+ final result = _Attribute.fromReader(1);
+
+ print(result);
+}
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/const_set.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/const_set.dart.expect
new file mode 100644
index 0000000..650c3cc
--- /dev/null
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/const_set.dart.expect
@@ -0,0 +1,33 @@
+library #lib /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class _AttributeName extends core::Object implements core::Enum /*isEnum*/ {
+[@vm.inferred-type.metadata=dart.core::_Smi] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:1] [@vm.unboxing-info.metadata=()->i] final field core::int index;
+[@vm.inferred-type.metadata=dart.core::_OneByteString] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:2] final field core::String _name;
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4] method toString() → core::String
+ return [@vm.direct-call.metadata=#lib::_AttributeName._name] [@vm.inferred-type.metadata=dart.core::_OneByteString] this.{self::_AttributeName::_name}{core::String};
+}
+class _Attribute extends core::Object {
+ constructor _() → self::_Attribute
+ : super core::Object::•()
+ ;
+ static method fromReader() → self::_Attribute {
+ final core::bool name = [@vm.direct-call.metadata=dart.collection::_CompactImmutableLinkedHashSet.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::_();
+ }
+}
+static method main() → void {
+ final self::_Attribute result = [@vm.inferred-type.metadata=#lib::_Attribute] self::_Attribute::fromReader();
+ core::print(result);
+}
+constants {
+ #C1 = 0
+ #C2 = 1
+ #C3 = <core::int*>{#C1, #C2}
+ #C4 = "_AttributeName.name"
+ #C5 = self::_AttributeName {index:#C1, _name:#C4}
+ #C6 = "_AttributeName.sibling"
+ #C7 = self::_AttributeName {index:#C2, _name:#C6}
+ #C8 = <self::_AttributeName*>[#C5, #C7]
+}
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/no_such_method.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/no_such_method.dart.expect
index 657e7ba..1212909 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/no_such_method.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/no_such_method.dart.expect
@@ -138,7 +138,7 @@
#C1 = #bar
#C2 = <core::Type*>[]
#C3 = <dynamic>[]
- #C4 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C3}
+ #C4 = <core::Symbol*, dynamic>{)
#C5 = #foo
#C6 = #bazz
#C7 = null
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/pragmas.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/pragmas.dart.expect
index 9578649..ba58887 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/pragmas.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/pragmas.dart.expect
@@ -16,9 +16,9 @@
synthetic constructor •() → self::Foo
: super core::Object::•()
;
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:4,getterSelectorId:5] @#C13
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:4,getterSelectorId:5] @#C12
method bar() → void {
- @#C17
+ @#C16
function bazz() → void {}
bazz(){() → void};
}
@@ -37,11 +37,10 @@
#C8 = self::B {y:#C7}
#C9 = 4
#C10 = "hey"
- #C11 = <dynamic>[#C6, #C8, #C9, #C10]
- #C12 = core::_ImmutableMap<core::int*, core::Object*> {_kvPairs:#C11}
- #C13 = core::pragma {name:#C5, options:#C12}
- #C14 = "test3"
- #C15 = 12
- #C16 = self::C {z:#C15}
- #C17 = core::pragma {name:#C14, options:#C16}
+ #C11 = <core::int*, core::Object*>{#C6:#C8, #C9:#C10)
+ #C12 = core::pragma {name:#C5, options:#C11}
+ #C13 = "test3"
+ #C14 = 12
+ #C15 = self::C {z:#C14}
+ #C16 = core::pragma {name:#C13, options:#C15}
}
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/regress_flutter81068.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/regress_flutter81068.dart.expect
index 37b6a68..4c3106f 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/regress_flutter81068.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/regress_flutter81068.dart.expect
@@ -19,9 +19,9 @@
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4] no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ catchError(core::Function onError) → asy::Future<self::B::T%>
return [@vm.direct-call.metadata=#lib::B.noSuchMethod] [@vm.inferred-type.metadata=! (skip check)] this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, core::List::unmodifiable<dynamic>([@vm.inferred-type.metadata=dart.core::_GrowableList<dynamic>] core::_GrowableList::_literal1<dynamic>(onError)), [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView<dart.core::Symbol*, dynamic>] core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C3: #C4}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<self::B::T%>;
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6] no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ whenComplete(() → FutureOr<void>action) → asy::Future<self::B::T%>
- return [@vm.direct-call.metadata=#lib::B.noSuchMethod] [@vm.inferred-type.metadata=! (skip check)] this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, core::List::unmodifiable<dynamic>([@vm.inferred-type.metadata=dart.core::_GrowableList<dynamic>] core::_GrowableList::_literal1<dynamic>(action)), [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView<dart.core::Symbol*, dynamic>] core::Map::unmodifiable<core::Symbol*, dynamic>(#C7))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<self::B::T%>;
+ return [@vm.direct-call.metadata=#lib::B.noSuchMethod] [@vm.inferred-type.metadata=! (skip check)] this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, core::List::unmodifiable<dynamic>([@vm.inferred-type.metadata=dart.core::_GrowableList<dynamic>] core::_GrowableList::_literal1<dynamic>(action)), [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView<dart.core::Symbol*, dynamic>] core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<self::B::T%>;
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:7,getterSelectorId:8] no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ then<R extends core::Object? = dynamic>((self::B::T%) → FutureOr<self::B::then::R%>onValue, {core::Function? onError = #C4}) → asy::Future<self::B::then::R%>
- return [@vm.direct-call.metadata=#lib::B.noSuchMethod] [@vm.inferred-type.metadata=! (skip check)] this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C8, 0, core::List::unmodifiable<core::Type*>([@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::Type*>] core::_GrowableList::_literal1<core::Type*>(self::B::then::R%)), core::List::unmodifiable<dynamic>([@vm.inferred-type.metadata=dart.core::_GrowableList<dynamic>] core::_GrowableList::_literal1<dynamic>(onValue)), [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView<dart.core::Symbol*, dynamic>] core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C9: onError}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<self::B::then::R%>;
+ return [@vm.direct-call.metadata=#lib::B.noSuchMethod] [@vm.inferred-type.metadata=! (skip check)] this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, core::List::unmodifiable<core::Type*>([@vm.inferred-type.metadata=dart.core::_GrowableList<dart.core::Type*>] core::_GrowableList::_literal1<core::Type*>(self::B::then::R%)), core::List::unmodifiable<dynamic>([@vm.inferred-type.metadata=dart.core::_GrowableList<dynamic>] core::_GrowableList::_literal1<dynamic>(onValue)), [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView<dart.core::Symbol*, dynamic>] core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: onError}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<self::B::then::R%>;
}
static method createB<T extends core::Object? = dynamic>() → self::B<dynamic>
return new self::B::•<self::createB::T%>();
@@ -34,8 +34,7 @@
#C3 = #test
#C4 = null
#C5 = #whenComplete
- #C6 = <dynamic>[]
- #C7 = core::_ImmutableMap<core::Symbol*, dynamic> {_kvPairs:#C6}
- #C8 = #then
- #C9 = #onError
+ #C6 = <core::Symbol*, dynamic>{)
+ #C7 = #then
+ #C8 = #onError
}
diff --git a/runtime/vm/class_finalizer.cc b/runtime/vm/class_finalizer.cc
index c858051..d4a768d 100644
--- a/runtime/vm/class_finalizer.cc
+++ b/runtime/vm/class_finalizer.cc
@@ -266,8 +266,12 @@
ASSERT_EQUAL(WeakProperty::InstanceSize(), cls.host_instance_size());
cls = object_store->linked_hash_map_class();
ASSERT_EQUAL(LinkedHashMap::InstanceSize(), cls.host_instance_size());
- cls = object_store->linked_hash_set_class();
+ cls = object_store->immutable_linked_hash_map_class();
ASSERT_EQUAL(LinkedHashMap::InstanceSize(), cls.host_instance_size());
+ cls = object_store->linked_hash_set_class();
+ ASSERT_EQUAL(LinkedHashSet::InstanceSize(), cls.host_instance_size());
+ cls = object_store->immutable_linked_hash_set_class();
+ ASSERT_EQUAL(LinkedHashSet::InstanceSize(), cls.host_instance_size());
#endif // defined(DEBUG)
// Remember the currently pending classes.
diff --git a/runtime/vm/class_id.h b/runtime/vm/class_id.h
index e7f7cbc..ad9f6b0 100644
--- a/runtime/vm/class_id.h
+++ b/runtime/vm/class_id.h
@@ -101,11 +101,13 @@
#define CLASS_LIST_NO_OBJECT_NOR_STRING_NOR_ARRAY_NOR_MAP(V) \
CLASS_LIST_INTERNAL_ONLY(V) CLASS_LIST_INSTANCE_SINGLETONS(V)
-// TODO(http://dartbug.com/45908): Add ImmutableLinkedHashMap.
-#define CLASS_LIST_MAPS(V) V(LinkedHashMap)
+#define CLASS_LIST_MAPS(V) \
+ V(LinkedHashMap) \
+ V(ImmutableLinkedHashMap)
-// TODO(http://dartbug.com/45908): Add ImmutableLinkedHashSet.
-#define CLASS_LIST_SETS(V) V(LinkedHashSet)
+#define CLASS_LIST_SETS(V) \
+ V(LinkedHashSet) \
+ V(ImmutableLinkedHashSet)
#define CLASS_LIST_FIXED_LENGTH_ARRAYS(V) \
V(Array) \
diff --git a/runtime/vm/clustered_snapshot.cc b/runtime/vm/clustered_snapshot.cc
index 40b0a98..cf5473e 100644
--- a/runtime/vm/clustered_snapshot.cc
+++ b/runtime/vm/clustered_snapshot.cc
@@ -3581,7 +3581,7 @@
intptr_t offset = Instance::NextFieldOffset();
while (offset < next_field_offset) {
if (unboxed_fields_bitmap.Get(offset / kCompressedWordSize)) {
- // Writes 32 bits of the unboxed value at a time
+ // Writes 32 bits of the unboxed value at a time.
const compressed_uword value = *reinterpret_cast<compressed_uword*>(
reinterpret_cast<uword>(instance->untag()) + offset);
s->WriteWordWith32BitWrites(value);
@@ -5006,14 +5006,18 @@
#if !defined(DART_PRECOMPILED_RUNTIME)
class LinkedHashMapSerializationCluster : public SerializationCluster {
public:
- LinkedHashMapSerializationCluster()
+ LinkedHashMapSerializationCluster(bool is_canonical, intptr_t cid)
: SerializationCluster("LinkedHashMap",
- kLinkedHashMapCid,
- compiler::target::LinkedHashMap::InstanceSize()) {}
+ cid,
+ compiler::target::LinkedHashMap::InstanceSize(),
+ is_canonical) {}
~LinkedHashMapSerializationCluster() {}
void Trace(Serializer* s, ObjectPtr object) {
LinkedHashMapPtr map = LinkedHashMap::RawCast(object);
+ // We never have mutable hashmaps in snapshots.
+ ASSERT(map->untag()->IsCanonical());
+ ASSERT_EQUAL(map.GetClassId(), kImmutableLinkedHashMapCid);
objects_.Add(map);
PushFromTo(map);
}
@@ -5044,8 +5048,9 @@
class LinkedHashMapDeserializationCluster
: public AbstractInstanceDeserializationCluster {
public:
- explicit LinkedHashMapDeserializationCluster(bool is_canonical)
- : AbstractInstanceDeserializationCluster("LinkedHashMap", is_canonical) {}
+ explicit LinkedHashMapDeserializationCluster(bool is_canonical, intptr_t cid)
+ : AbstractInstanceDeserializationCluster("LinkedHashMap", is_canonical),
+ cid_(cid) {}
~LinkedHashMapDeserializationCluster() {}
void ReadAlloc(Deserializer* d) {
@@ -5055,12 +5060,81 @@
void ReadFill(Deserializer* d, bool primary) {
for (intptr_t id = start_index_; id < stop_index_; id++) {
LinkedHashMapPtr map = static_cast<LinkedHashMapPtr>(d->Ref(id));
- Deserializer::InitializeHeader(map, kLinkedHashMapCid,
- LinkedHashMap::InstanceSize(),
+ Deserializer::InitializeHeader(map, cid_, LinkedHashMap::InstanceSize(),
primary && is_canonical());
ReadFromTo(map);
}
}
+
+ private:
+ const intptr_t cid_;
+};
+
+#if !defined(DART_PRECOMPILED_RUNTIME)
+class LinkedHashSetSerializationCluster : public SerializationCluster {
+ public:
+ LinkedHashSetSerializationCluster(bool is_canonical, intptr_t cid)
+ : SerializationCluster("LinkedHashSet",
+ cid,
+ compiler::target::LinkedHashSet::InstanceSize(),
+ is_canonical) {}
+ ~LinkedHashSetSerializationCluster() {}
+
+ void Trace(Serializer* s, ObjectPtr object) {
+ LinkedHashSetPtr set = LinkedHashSet::RawCast(object);
+ // We never have mutable hashsets in snapshots.
+ ASSERT(set->untag()->IsCanonical());
+ ASSERT_EQUAL(set.GetClassId(), kImmutableLinkedHashSetCid);
+ objects_.Add(set);
+ PushFromTo(set);
+ }
+
+ void WriteAlloc(Serializer* s) {
+ const intptr_t count = objects_.length();
+ s->WriteUnsigned(count);
+ for (intptr_t i = 0; i < count; i++) {
+ LinkedHashSetPtr set = objects_[i];
+ s->AssignRef(set);
+ }
+ }
+
+ void WriteFill(Serializer* s) {
+ const intptr_t count = objects_.length();
+ for (intptr_t i = 0; i < count; i++) {
+ LinkedHashSetPtr set = objects_[i];
+ AutoTraceObject(set);
+ WriteFromTo(set);
+ }
+ }
+
+ private:
+ GrowableArray<LinkedHashSetPtr> objects_;
+};
+#endif // !DART_PRECOMPILED_RUNTIME
+
+class LinkedHashSetDeserializationCluster
+ : public AbstractInstanceDeserializationCluster {
+ public:
+ explicit LinkedHashSetDeserializationCluster(bool is_canonical, intptr_t cid)
+ : AbstractInstanceDeserializationCluster("LinkedHashSet", is_canonical),
+ cid_(cid) {}
+ ~LinkedHashSetDeserializationCluster() {}
+
+ void ReadAlloc(Deserializer* d) {
+ ReadAllocFixedSize(d, LinkedHashSet::InstanceSize());
+ }
+
+ void ReadFill(Deserializer* d, bool primary) {
+ for (intptr_t id = start_index_; id < stop_index_; id++) {
+ LinkedHashSetPtr set = static_cast<LinkedHashSetPtr>(d->Ref(id));
+ Deserializer::InitializeHeader(set, cid_, LinkedHashSet::InstanceSize(),
+ primary && is_canonical());
+ ReadFromTo(set);
+ }
+ }
+
+ private:
+ const intptr_t cid_;
};
#if !defined(DART_PRECOMPILED_RUNTIME)
@@ -6410,9 +6484,15 @@
case kLinkedHashMapCid:
// We do not have mutable hash maps in snapshots.
UNREACHABLE();
+ case kImmutableLinkedHashMapCid:
+ return new (Z) LinkedHashMapSerializationCluster(
+ is_canonical, kImmutableLinkedHashMapCid);
case kLinkedHashSetCid:
// We do not have mutable hash sets in snapshots.
UNREACHABLE();
+ case kImmutableLinkedHashSetCid:
+ return new (Z) LinkedHashSetSerializationCluster(
+ is_canonical, kImmutableLinkedHashSetCid);
case kArrayCid:
return new (Z) ArraySerializationCluster(is_canonical, kArrayCid);
case kImmutableArrayCid:
@@ -7321,9 +7401,15 @@
case kLinkedHashMapCid:
// We do not have mutable hash maps in snapshots.
UNREACHABLE();
+ case kImmutableLinkedHashMapCid:
+ return new (Z) LinkedHashMapDeserializationCluster(
+ is_canonical, kImmutableLinkedHashMapCid);
case kLinkedHashSetCid:
// We do not have mutable hash sets in snapshots.
UNREACHABLE();
+ case kImmutableLinkedHashSetCid:
+ return new (Z) LinkedHashSetDeserializationCluster(
+ is_canonical, kImmutableLinkedHashSetCid);
case kArrayCid:
return new (Z) ArrayDeserializationCluster(is_canonical, kArrayCid);
case kImmutableArrayCid:
diff --git a/runtime/vm/compiler/assembler/assembler_arm.cc b/runtime/vm/compiler/assembler/assembler_arm.cc
index d285792..163403a 100644
--- a/runtime/vm/compiler/assembler/assembler_arm.cc
+++ b/runtime/vm/compiler/assembler/assembler_arm.cc
@@ -1766,7 +1766,8 @@
void Assembler::StoreIntoObject(Register object,
const Address& dest,
Register value,
- CanBeSmi can_be_smi) {
+ CanBeSmi can_be_smi,
+ MemoryOrder memory_order) {
// x.slot = x. Barrier should have be removed at the IL level.
ASSERT(object != value);
ASSERT(object != LINK_REGISTER);
@@ -1774,7 +1775,11 @@
ASSERT(object != TMP);
ASSERT(value != TMP);
- str(value, dest);
+ if (memory_order == kRelease) {
+ StoreRelease(value, dest);
+ } else {
+ str(value, dest);
+ }
// In parallel, test whether
// - object is old and not remembered and value is new, or
@@ -1889,22 +1894,28 @@
void Assembler::StoreIntoObjectOffset(Register object,
int32_t offset,
Register value,
- CanBeSmi can_value_be_smi) {
+ CanBeSmi can_value_be_smi,
+ MemoryOrder memory_order) {
int32_t ignored = 0;
if (Address::CanHoldStoreOffset(kFourBytes, offset - kHeapObjectTag,
&ignored)) {
StoreIntoObject(object, FieldAddress(object, offset), value,
- can_value_be_smi);
+ can_value_be_smi, memory_order);
} else {
AddImmediate(IP, object, offset - kHeapObjectTag);
- StoreIntoObject(object, Address(IP), value, can_value_be_smi);
+ StoreIntoObject(object, Address(IP), value, can_value_be_smi, memory_order);
}
}
void Assembler::StoreIntoObjectNoBarrier(Register object,
const Address& dest,
- Register value) {
- str(value, dest);
+ Register value,
+ MemoryOrder memory_order) {
+ if (memory_order == kRelease) {
+ StoreRelease(value, dest);
+ } else {
+ str(value, dest);
+ }
#if defined(DEBUG)
Label done;
StoreIntoObjectFilter(object, value, &done, kValueCanBeSmi, kJumpToNoUpdate);
@@ -1921,43 +1932,52 @@
void Assembler::StoreIntoObjectNoBarrier(Register object,
const Address& dest,
- const Object& value) {
+ const Object& value,
+ MemoryOrder memory_order) {
ASSERT(IsOriginalObject(value));
ASSERT(IsNotTemporaryScopedHandle(value));
// No store buffer update.
LoadObject(IP, value);
- str(IP, dest);
+ if (memory_order == kRelease) {
+ StoreRelease(IP, dest);
+ } else {
+ str(IP, dest);
+ }
}
void Assembler::StoreIntoObjectNoBarrierOffset(Register object,
int32_t offset,
- Register value) {
+ Register value,
+ MemoryOrder memory_order) {
int32_t ignored = 0;
if (Address::CanHoldStoreOffset(kFourBytes, offset - kHeapObjectTag,
&ignored)) {
- StoreIntoObjectNoBarrier(object, FieldAddress(object, offset), value);
+ StoreIntoObjectNoBarrier(object, FieldAddress(object, offset), value,
+ memory_order);
} else {
Register base = object == R9 ? R8 : R9;
Push(base);
AddImmediate(base, object, offset - kHeapObjectTag);
- StoreIntoObjectNoBarrier(object, Address(base), value);
+ StoreIntoObjectNoBarrier(object, Address(base), value, memory_order);
Pop(base);
}
}
void Assembler::StoreIntoObjectNoBarrierOffset(Register object,
int32_t offset,
- const Object& value) {
+ const Object& value,
+ MemoryOrder memory_order) {
ASSERT(IsOriginalObject(value));
int32_t ignored = 0;
if (Address::CanHoldStoreOffset(kFourBytes, offset - kHeapObjectTag,
&ignored)) {
- StoreIntoObjectNoBarrier(object, FieldAddress(object, offset), value);
+ StoreIntoObjectNoBarrier(object, FieldAddress(object, offset), value,
+ memory_order);
} else {
Register base = object == R9 ? R8 : R9;
Push(base);
AddImmediate(base, object, offset - kHeapObjectTag);
- StoreIntoObjectNoBarrier(object, Address(base), value);
+ StoreIntoObjectNoBarrier(object, Address(base), value, memory_order);
Pop(base);
}
}
diff --git a/runtime/vm/compiler/assembler/assembler_arm.h b/runtime/vm/compiler/assembler/assembler_arm.h
index abb82a1..636d030 100644
--- a/runtime/vm/compiler/assembler/assembler_arm.h
+++ b/runtime/vm/compiler/assembler/assembler_arm.h
@@ -402,9 +402,16 @@
ldr(dst, Address(address, offset));
dmb();
}
- void StoreRelease(Register src, Register address, int32_t offset = 0) {
+ void StoreRelease(Register src,
+ Register address,
+ int32_t offset = 0) override {
+ StoreRelease(src, Address(address, offset));
+ }
+ void StoreRelease(Register src, Address dest) {
dmb();
- str(src, Address(address, offset));
+ str(src, dest);
+
+ // We don't run TSAN bots on 32 bit.
}
void CompareWithFieldValue(Register value, FieldAddress address) {
@@ -877,7 +884,8 @@
void StoreIntoObject(Register object, // Object we are storing into.
const Address& dest, // Where we are storing into.
Register value, // Value we are storing.
- CanBeSmi can_value_be_smi = kValueCanBeSmi) override;
+ CanBeSmi can_value_be_smi = kValueCanBeSmi,
+ MemoryOrder memory_order = kRelaxedNonAtomic) override;
void StoreIntoArray(Register object,
Register slot,
Register value,
@@ -885,20 +893,28 @@
void StoreIntoObjectOffset(Register object,
int32_t offset,
Register value,
- CanBeSmi can_value_be_smi = kValueCanBeSmi);
+ CanBeSmi can_value_be_smi = kValueCanBeSmi,
+ MemoryOrder memory_order = kRelaxedNonAtomic);
+ void StoreIntoObjectNoBarrier(
+ Register object,
+ const Address& dest,
+ Register value,
+ MemoryOrder memory_order = kRelaxedNonAtomic) override;
void StoreIntoObjectNoBarrier(Register object,
const Address& dest,
- Register value) override;
- void StoreIntoObjectNoBarrier(Register object,
- const Address& dest,
- const Object& value);
- void StoreIntoObjectNoBarrierOffset(Register object,
- int32_t offset,
- Register value);
- void StoreIntoObjectNoBarrierOffset(Register object,
- int32_t offset,
- const Object& value);
+ const Object& value,
+ MemoryOrder memory_order = kRelaxedNonAtomic);
+ void StoreIntoObjectNoBarrierOffset(
+ Register object,
+ int32_t offset,
+ Register value,
+ MemoryOrder memory_order = kRelaxedNonAtomic);
+ void StoreIntoObjectNoBarrierOffset(
+ Register object,
+ int32_t offset,
+ const Object& value,
+ MemoryOrder memory_order = kRelaxedNonAtomic);
// Stores a non-tagged value into a heap object.
void StoreInternalPointer(Register object,
diff --git a/runtime/vm/compiler/assembler/assembler_arm64.cc b/runtime/vm/compiler/assembler/assembler_arm64.cc
index 3502a6e..d15a27a 100644
--- a/runtime/vm/compiler/assembler/assembler_arm64.cc
+++ b/runtime/vm/compiler/assembler/assembler_arm64.cc
@@ -1092,33 +1092,42 @@
void Assembler::StoreIntoObjectOffset(Register object,
int32_t offset,
Register value,
- CanBeSmi value_can_be_smi) {
- if (Address::CanHoldOffset(offset - kHeapObjectTag)) {
- StoreIntoObject(object, FieldAddress(object, offset), value,
- value_can_be_smi);
+ CanBeSmi value_can_be_smi,
+ MemoryOrder memory_order) {
+ if (memory_order == kRelease) {
+ StoreRelease(value, object, offset);
+ } else if (FieldAddress::CanHoldOffset(offset)) {
+ str(value, FieldAddress(object, offset));
} else {
AddImmediate(TMP, object, offset - kHeapObjectTag);
- StoreIntoObject(object, Address(TMP), value, value_can_be_smi);
+ str(value, Address(TMP));
}
+ StoreBarrier(object, value, value_can_be_smi);
}
void Assembler::StoreCompressedIntoObjectOffset(Register object,
int32_t offset,
Register value,
- CanBeSmi value_can_be_smi) {
- if (Address::CanHoldOffset(offset - kHeapObjectTag)) {
- StoreCompressedIntoObject(object, FieldAddress(object, offset), value,
- value_can_be_smi);
+ CanBeSmi value_can_be_smi,
+ MemoryOrder memory_order) {
+ if (memory_order == kRelease) {
+ StoreReleaseCompressed(value, object, offset);
+ } else if (FieldAddress::CanHoldOffset(offset)) {
+ str(value, FieldAddress(object, offset), kObjectBytes);
} else {
AddImmediate(TMP, object, offset - kHeapObjectTag);
- StoreCompressedIntoObject(object, Address(TMP), value, value_can_be_smi);
+ str(value, Address(TMP), kObjectBytes);
}
+ StoreBarrier(object, value, value_can_be_smi);
}
void Assembler::StoreIntoObject(Register object,
const Address& dest,
Register value,
- CanBeSmi can_be_smi) {
+ CanBeSmi can_be_smi,
+ MemoryOrder memory_order) {
+ // stlr does not feature an address operand.
+ ASSERT(memory_order == kRelaxedNonAtomic);
str(value, dest);
StoreBarrier(object, value, can_be_smi);
}
@@ -1126,7 +1135,10 @@
void Assembler::StoreCompressedIntoObject(Register object,
const Address& dest,
Register value,
- CanBeSmi can_be_smi) {
+ CanBeSmi can_be_smi,
+ MemoryOrder memory_order) {
+ // stlr does not feature an address operand.
+ ASSERT(memory_order == kRelaxedNonAtomic);
str(value, dest, kObjectBytes);
StoreBarrier(object, value, can_be_smi);
}
@@ -1264,7 +1276,10 @@
void Assembler::StoreIntoObjectNoBarrier(Register object,
const Address& dest,
- Register value) {
+ Register value,
+ MemoryOrder memory_order) {
+ // stlr does not feature an address operand.
+ ASSERT(memory_order == kRelaxedNonAtomic);
str(value, dest);
#if defined(DEBUG)
Label done;
@@ -1283,7 +1298,10 @@
void Assembler::StoreCompressedIntoObjectNoBarrier(Register object,
const Address& dest,
- Register value) {
+ Register value,
+ MemoryOrder memory_order) {
+ // stlr does not feature an address operand.
+ ASSERT(memory_order == kRelaxedNonAtomic);
str(value, dest, kObjectBytes);
#if defined(DEBUG)
Label done;
@@ -1302,8 +1320,11 @@
void Assembler::StoreIntoObjectOffsetNoBarrier(Register object,
int32_t offset,
- Register value) {
- if (Address::CanHoldOffset(offset - kHeapObjectTag)) {
+ Register value,
+ MemoryOrder memory_order) {
+ if (memory_order == kRelease) {
+ StoreRelease(value, object, offset);
+ } else if (FieldAddress::CanHoldOffset(offset)) {
StoreIntoObjectNoBarrier(object, FieldAddress(object, offset), value);
} else {
AddImmediate(TMP, object, offset - kHeapObjectTag);
@@ -1311,10 +1332,14 @@
}
}
-void Assembler::StoreCompressedIntoObjectOffsetNoBarrier(Register object,
- int32_t offset,
- Register value) {
- if (Address::CanHoldOffset(offset - kHeapObjectTag)) {
+void Assembler::StoreCompressedIntoObjectOffsetNoBarrier(
+ Register object,
+ int32_t offset,
+ Register value,
+ MemoryOrder memory_order) {
+ if (memory_order == kRelease) {
+ StoreReleaseCompressed(value, object, offset);
+ } else if (FieldAddress::CanHoldOffset(offset)) {
StoreCompressedIntoObjectNoBarrier(object, FieldAddress(object, offset),
value);
} else {
@@ -1339,7 +1364,10 @@
void Assembler::StoreCompressedIntoObjectNoBarrier(Register object,
const Address& dest,
- const Object& value) {
+ const Object& value,
+ MemoryOrder memory_order) {
+ // stlr does not feature an address operand.
+ ASSERT(memory_order == kRelaxedNonAtomic);
ASSERT(IsOriginalObject(value));
ASSERT(IsNotTemporaryScopedHandle(value));
// No store buffer update.
@@ -1353,8 +1381,17 @@
void Assembler::StoreIntoObjectOffsetNoBarrier(Register object,
int32_t offset,
- const Object& value) {
- if (Address::CanHoldOffset(offset - kHeapObjectTag)) {
+ const Object& value,
+ MemoryOrder memory_order) {
+ if (memory_order == kRelease) {
+ Register value_reg = TMP2;
+ if (IsSameObject(compiler::NullObject(), value)) {
+ value_reg = NULL_REG;
+ } else {
+ LoadObject(value_reg, value);
+ }
+ StoreIntoObjectOffsetNoBarrier(object, offset, value_reg, memory_order);
+ } else if (FieldAddress::CanHoldOffset(offset)) {
StoreIntoObjectNoBarrier(object, FieldAddress(object, offset), value);
} else {
AddImmediate(TMP, object, offset - kHeapObjectTag);
@@ -1362,10 +1399,21 @@
}
}
-void Assembler::StoreCompressedIntoObjectOffsetNoBarrier(Register object,
- int32_t offset,
- const Object& value) {
- if (Address::CanHoldOffset(offset - kHeapObjectTag)) {
+void Assembler::StoreCompressedIntoObjectOffsetNoBarrier(
+ Register object,
+ int32_t offset,
+ const Object& value,
+ MemoryOrder memory_order) {
+ Register value_reg = TMP2;
+ if (memory_order == kRelease) {
+ if (IsSameObject(compiler::NullObject(), value)) {
+ value_reg = NULL_REG;
+ } else {
+ LoadObject(value_reg, value);
+ }
+ StoreCompressedIntoObjectOffsetNoBarrier(object, offset, value_reg,
+ memory_order);
+ } else if (FieldAddress::CanHoldOffset(offset)) {
StoreCompressedIntoObjectNoBarrier(object, FieldAddress(object, offset),
value);
} else {
diff --git a/runtime/vm/compiler/assembler/assembler_arm64.h b/runtime/vm/compiler/assembler/assembler_arm64.h
index 3826473..ff4af61 100644
--- a/runtime/vm/compiler/assembler/assembler_arm64.h
+++ b/runtime/vm/compiler/assembler/assembler_arm64.h
@@ -370,6 +370,12 @@
class FieldAddress : public Address {
public:
+ static bool CanHoldOffset(int32_t offset,
+ AddressType at = Offset,
+ OperandSize sz = kEightBytes) {
+ return Address::CanHoldOffset(offset - kHeapObjectTag, at, sz);
+ }
+
FieldAddress(Register base, int32_t disp, OperandSize sz = kEightBytes)
: Address(base, disp - kHeapObjectTag, Offset, sz) {}
@@ -595,19 +601,32 @@
}
}
- void StoreRelease(Register dst, Register address, int32_t offset = 0) {
+ void StoreRelease(Register src,
+ Register address,
+ int32_t offset = 0) override {
+ Register kDestReg = address;
if (offset != 0) {
- AddImmediate(TMP2, address, offset);
- stlr(dst, TMP2);
-#if defined(USING_THREAD_SANITIZER)
- TsanStoreRelease(TMP2);
-#endif
- } else {
- stlr(dst, address);
-#if defined(USING_THREAD_SANITIZER)
- TsanStoreRelease(address);
-#endif
+ kDestReg = TMP;
+ AddImmediate(kDestReg, address, offset);
}
+ stlr(src, kDestReg);
+#if defined(USING_THREAD_SANITIZER)
+ TsanStoreRelease(kDestReg);
+#endif
+ }
+
+ void StoreReleaseCompressed(Register src,
+ Register address,
+ int32_t offset = 0) {
+ Register kResultReg = address;
+ if (offset != 0) {
+ kResultReg = TMP;
+ AddImmediate(kResultReg, address, offset);
+ }
+ stlr(src, kResultReg, kObjectBytes);
+#if defined(USING_THREAD_SANITIZER)
+ TsanStoreRelease(kResultReg);
+#endif
}
void CompareWithFieldValue(Register value, FieldAddress address) {
@@ -1696,7 +1715,8 @@
// Macros accepting a pp Register argument may attempt to load values from
// the object pool when possible. Unless you are sure that the untagged object
// pool pointer is in another register, or that it is not available at all,
- // PP should be passed for pp. `dest` can be TMP2, `rn` cannot.
+ // PP should be passed for pp. `dest` can be TMP2, `rn` cannot. `dest` can be
+ // TMP.
void AddImmediate(Register dest,
Register rn,
int64_t imm,
@@ -1835,12 +1855,14 @@
void StoreIntoObject(Register object,
const Address& dest,
Register value,
- CanBeSmi can_value_be_smi = kValueCanBeSmi) override;
+ CanBeSmi can_value_be_smi = kValueCanBeSmi,
+ MemoryOrder memory_order = kRelaxedNonAtomic) override;
void StoreCompressedIntoObject(
Register object,
const Address& dest,
Register value,
- CanBeSmi can_value_be_smi = kValueCanBeSmi) override;
+ CanBeSmi can_value_be_smi = kValueCanBeSmi,
+ MemoryOrder memory_order = kRelaxedNonAtomic) override;
void StoreBarrier(Register object, Register value, CanBeSmi can_value_be_smi);
void StoreIntoArray(Register object,
Register slot,
@@ -1858,36 +1880,52 @@
void StoreIntoObjectOffset(Register object,
int32_t offset,
Register value,
- CanBeSmi can_value_be_smi = kValueCanBeSmi);
+ CanBeSmi can_value_be_smi = kValueCanBeSmi,
+ MemoryOrder memory_order = kRelaxedNonAtomic);
void StoreCompressedIntoObjectOffset(
Register object,
int32_t offset,
Register value,
- CanBeSmi can_value_be_smi = kValueCanBeSmi);
- void StoreIntoObjectNoBarrier(Register object,
- const Address& dest,
- Register value) override;
- void StoreCompressedIntoObjectNoBarrier(Register object,
- const Address& dest,
- Register value) override;
- void StoreIntoObjectOffsetNoBarrier(Register object,
- int32_t offset,
- Register value);
- void StoreCompressedIntoObjectOffsetNoBarrier(Register object,
- int32_t offset,
- Register value);
+ CanBeSmi can_value_be_smi = kValueCanBeSmi,
+ MemoryOrder memory_order = kRelaxedNonAtomic);
+ void StoreIntoObjectNoBarrier(
+ Register object,
+ const Address& dest,
+ Register value,
+ MemoryOrder memory_order = kRelaxedNonAtomic) override;
+ void StoreCompressedIntoObjectNoBarrier(
+ Register object,
+ const Address& dest,
+ Register value,
+ MemoryOrder memory_order = kRelaxedNonAtomic) override;
+ void StoreIntoObjectOffsetNoBarrier(
+ Register object,
+ int32_t offset,
+ Register value,
+ MemoryOrder memory_order = kRelaxedNonAtomic);
+ void StoreCompressedIntoObjectOffsetNoBarrier(
+ Register object,
+ int32_t offset,
+ Register value,
+ MemoryOrder memory_order = kRelaxedNonAtomic);
void StoreIntoObjectNoBarrier(Register object,
const Address& dest,
const Object& value);
- void StoreCompressedIntoObjectNoBarrier(Register object,
- const Address& dest,
- const Object& value);
- void StoreIntoObjectOffsetNoBarrier(Register object,
- int32_t offset,
- const Object& value);
- void StoreCompressedIntoObjectOffsetNoBarrier(Register object,
- int32_t offset,
- const Object& value);
+ void StoreCompressedIntoObjectNoBarrier(
+ Register object,
+ const Address& dest,
+ const Object& value,
+ MemoryOrder memory_order = kRelaxedNonAtomic);
+ void StoreIntoObjectOffsetNoBarrier(
+ Register object,
+ int32_t offset,
+ const Object& value,
+ MemoryOrder memory_order = kRelaxedNonAtomic);
+ void StoreCompressedIntoObjectOffsetNoBarrier(
+ Register object,
+ int32_t offset,
+ const Object& value,
+ MemoryOrder memory_order = kRelaxedNonAtomic);
// Stores a non-tagged value into a heap object.
void StoreInternalPointer(Register object,
diff --git a/runtime/vm/compiler/assembler/assembler_base.h b/runtime/vm/compiler/assembler/assembler_base.h
index 1f22998..9ef00e4 100644
--- a/runtime/vm/compiler/assembler/assembler_base.h
+++ b/runtime/vm/compiler/assembler/assembler_base.h
@@ -635,6 +635,16 @@
kValueIsNotSmi,
};
+ enum MemoryOrder {
+ // All previous writes to memory in this thread must be visible to other
+ // threads. Currently, only used for lazily populating hash indices in
+ // shared const maps and sets.
+ kRelease,
+
+ // All other stores.
+ kRelaxedNonAtomic,
+ };
+
virtual void LoadField(Register dst, const FieldAddress& address) = 0;
virtual void LoadFieldFromOffset(Register reg,
Register base,
@@ -646,11 +656,13 @@
Register object, // Object we are storing into.
const Address& dest, // Where we are storing into.
Register value, // Value we are storing.
- CanBeSmi can_be_smi = kValueCanBeSmi) = 0;
+ CanBeSmi can_be_smi = kValueCanBeSmi,
+ MemoryOrder memory_order = kRelaxedNonAtomic) = 0;
virtual void StoreIntoObjectNoBarrier(
Register object, // Object we are storing into.
const Address& dest, // Where we are storing into.
- Register value) = 0; // Value we are storing.
+ Register value, // Value we are storing.
+ MemoryOrder memory_order = kRelaxedNonAtomic) = 0;
// For native unboxed slots, both methods are the same, as no write barrier
// is needed.
void StoreToSlot(Register src, Register base, const Slot& slot);
@@ -669,11 +681,13 @@
Register object, // Object we are storing into.
const Address& dest, // Where we are storing into.
Register value, // Value we are storing.
- CanBeSmi can_be_smi = kValueCanBeSmi) = 0;
+ CanBeSmi can_be_smi = kValueCanBeSmi,
+ MemoryOrder memory_order = kRelaxedNonAtomic) = 0;
virtual void StoreCompressedIntoObjectNoBarrier(
Register object, // Object we are storing into.
const Address& dest, // Where we are storing into.
- Register value) = 0; // Value we are storing.
+ Register value, // Value we are storing.
+ MemoryOrder memory_order = kRelaxedNonAtomic) = 0;
#else
virtual void LoadCompressedField(Register dst, const FieldAddress& address) {
LoadField(dst, address);
@@ -687,17 +701,23 @@
Register object, // Object we are storing into.
const Address& dest, // Where we are storing into.
Register value, // Value we are storing.
- CanBeSmi can_be_smi = kValueCanBeSmi) {
+ CanBeSmi can_be_smi = kValueCanBeSmi,
+ MemoryOrder memory_order = kRelaxedNonAtomic) {
StoreIntoObject(object, dest, value, can_be_smi);
}
virtual void StoreCompressedIntoObjectNoBarrier(
Register object, // Object we are storing into.
const Address& dest, // Where we are storing into.
- Register value) { // Value we are storing.
+ Register value, // Value we are storing.
+ MemoryOrder memory_order = kRelaxedNonAtomic) {
StoreIntoObjectNoBarrier(object, dest, value);
}
#endif // defined(DART_COMPRESSED_POINTERS)
+ virtual void StoreRelease(Register src,
+ Register address,
+ int32_t offset = 0) = 0;
+
virtual void EnsureHasClassIdInDEBUG(intptr_t cid,
Register src,
Register scratch,
diff --git a/runtime/vm/compiler/assembler/assembler_ia32.cc b/runtime/vm/compiler/assembler/assembler_ia32.cc
index 05b6d4b..459cbf2 100644
--- a/runtime/vm/compiler/assembler/assembler_ia32.cc
+++ b/runtime/vm/compiler/assembler/assembler_ia32.cc
@@ -2024,11 +2024,16 @@
void Assembler::StoreIntoObject(Register object,
const Address& dest,
Register value,
- CanBeSmi can_be_smi) {
+ CanBeSmi can_be_smi,
+ MemoryOrder memory_order) {
// x.slot = x. Barrier should have be removed at the IL level.
ASSERT(object != value);
- movl(dest, value);
+ if (memory_order == kRelease) {
+ StoreRelease(value, dest.base(), dest.disp32());
+ } else {
+ movl(dest, value);
+ }
Label done;
StoreIntoObjectFilter(object, value, &done, can_be_smi, kJumpToNoUpdate);
// A store buffer update is required.
@@ -2047,8 +2052,13 @@
void Assembler::StoreIntoObjectNoBarrier(Register object,
const Address& dest,
- Register value) {
- movl(dest, value);
+ Register value,
+ MemoryOrder memory_order) {
+ if (memory_order == kRelease) {
+ StoreRelease(value, dest.base(), dest.disp32());
+ } else {
+ movl(dest, value);
+ }
#if defined(DEBUG)
Label done;
pushl(value);
@@ -2109,8 +2119,20 @@
void Assembler::StoreIntoObjectNoBarrier(Register object,
const Address& dest,
- const Object& value) {
+ const Object& value,
+ MemoryOrder memory_order) {
ASSERT(IsOriginalObject(value));
+ // Ignoring memory_order.
+ // On intel stores have store-release behavior (i.e. stores are not
+ // re-ordered with other stores).
+ // We don't run TSAN on 32 bit systems.
+ // Don't call StoreRelease here because we would have to load the immediate
+ // into a temp register which causes spilling.
+#if defined(USING_THREAD_SANITIZER)
+ if (memory_order == kRelease) {
+ UNIMPLEMENTED();
+ }
+#endif
if (target::CanEmbedAsRawPointerInGeneratedCode(value)) {
Immediate imm_value(target::ToRawPointer(value));
movl(dest, imm_value);
diff --git a/runtime/vm/compiler/assembler/assembler_ia32.h b/runtime/vm/compiler/assembler/assembler_ia32.h
index 091b2a1..da68e52 100644
--- a/runtime/vm/compiler/assembler/assembler_ia32.h
+++ b/runtime/vm/compiler/assembler/assembler_ia32.h
@@ -672,10 +672,14 @@
// with other loads).
movl(dst, Address(address, offset));
}
- void StoreRelease(Register src, Register address, int32_t offset = 0) {
+ void StoreRelease(Register src,
+ Register address,
+ int32_t offset = 0) override {
// On intel stores have store-release behavior (i.e. stores are not
// re-ordered with other stores).
movl(Address(address, offset), src);
+
+ // We don't run TSAN on 32 bit systems.
}
void ExtendValue(Register to, Register from, OperandSize sz) override;
@@ -741,17 +745,21 @@
void StoreIntoObject(Register object, // Object we are storing into.
const Address& dest, // Where we are storing into.
Register value, // Value we are storing.
- CanBeSmi can_value_be_smi = kValueCanBeSmi) override;
+ CanBeSmi can_value_be_smi = kValueCanBeSmi,
+ MemoryOrder memory_order = kRelaxedNonAtomic) override;
void StoreIntoArray(Register object, // Object we are storing into.
Register slot, // Where we are storing into.
Register value, // Value we are storing.
CanBeSmi can_value_be_smi = kValueCanBeSmi);
+ void StoreIntoObjectNoBarrier(
+ Register object,
+ const Address& dest,
+ Register value,
+ MemoryOrder memory_order = kRelaxedNonAtomic) override;
void StoreIntoObjectNoBarrier(Register object,
const Address& dest,
- Register value) override;
- void StoreIntoObjectNoBarrier(Register object,
- const Address& dest,
- const Object& value);
+ const Object& value,
+ MemoryOrder memory_order = kRelaxedNonAtomic);
// Stores a non-tagged value into a heap object.
void StoreInternalPointer(Register object,
diff --git a/runtime/vm/compiler/assembler/assembler_x64.cc b/runtime/vm/compiler/assembler/assembler_x64.cc
index 22b6673..7042a44 100644
--- a/runtime/vm/compiler/assembler/assembler_x64.cc
+++ b/runtime/vm/compiler/assembler/assembler_x64.cc
@@ -1440,16 +1440,26 @@
void Assembler::StoreIntoObject(Register object,
const Address& dest,
Register value,
- CanBeSmi can_be_smi) {
- movq(dest, value);
+ CanBeSmi can_be_smi,
+ MemoryOrder memory_order) {
+ if (memory_order == kRelease) {
+ StoreRelease(value, dest.base(), dest.disp32());
+ } else {
+ movq(dest, value);
+ }
StoreBarrier(object, value, can_be_smi);
}
void Assembler::StoreCompressedIntoObject(Register object,
const Address& dest,
Register value,
- CanBeSmi can_be_smi) {
- OBJ(mov)(dest, value);
+ CanBeSmi can_be_smi,
+ MemoryOrder memory_order) {
+ if (memory_order == kRelease) {
+ StoreReleaseCompressed(value, dest.base(), dest.disp8());
+ } else {
+ OBJ(mov)(dest, value);
+ }
StoreBarrier(object, value, can_be_smi);
}
@@ -1560,8 +1570,13 @@
void Assembler::StoreIntoObjectNoBarrier(Register object,
const Address& dest,
- Register value) {
- movq(dest, value);
+ Register value,
+ MemoryOrder memory_order) {
+ if (memory_order == kRelease) {
+ StoreRelease(value, dest.base(), dest.disp32());
+ } else {
+ movq(dest, value);
+ }
#if defined(DEBUG)
Label done;
pushq(value);
@@ -1580,8 +1595,13 @@
void Assembler::StoreCompressedIntoObjectNoBarrier(Register object,
const Address& dest,
- Register value) {
- OBJ(mov)(dest, value);
+ Register value,
+ MemoryOrder memory_order) {
+ if (memory_order == kRelease) {
+ StoreReleaseCompressed(value, dest.base(), dest.disp8());
+ } else {
+ OBJ(mov)(dest, value);
+ }
#if defined(DEBUG)
Label done;
pushq(value);
@@ -1600,15 +1620,22 @@
void Assembler::StoreIntoObjectNoBarrier(Register object,
const Address& dest,
- const Object& value) {
- StoreObject(dest, value);
+ const Object& value,
+ MemoryOrder memory_order) {
+ if (memory_order == kRelease) {
+ LoadObject(TMP, value);
+ StoreIntoObjectNoBarrier(object, dest, TMP, memory_order);
+ } else {
+ StoreObject(dest, value);
+ }
}
void Assembler::StoreCompressedIntoObjectNoBarrier(Register object,
const Address& dest,
- const Object& value) {
+ const Object& value,
+ MemoryOrder memory_order) {
LoadObject(TMP, value);
- StoreCompressedIntoObjectNoBarrier(object, dest, TMP);
+ StoreCompressedIntoObjectNoBarrier(object, dest, TMP, memory_order);
}
void Assembler::StoreInternalPointer(Register object,
diff --git a/runtime/vm/compiler/assembler/assembler_x64.h b/runtime/vm/compiler/assembler/assembler_x64.h
index e32a0a4..32646c9 100644
--- a/runtime/vm/compiler/assembler/assembler_x64.h
+++ b/runtime/vm/compiler/assembler/assembler_x64.h
@@ -789,12 +789,14 @@
void StoreIntoObject(Register object, // Object we are storing into.
const Address& dest, // Where we are storing into.
Register value, // Value we are storing.
- CanBeSmi can_be_smi = kValueCanBeSmi) override;
+ CanBeSmi can_be_smi = kValueCanBeSmi,
+ MemoryOrder memory_order = kRelaxedNonAtomic) override;
void StoreCompressedIntoObject(
Register object, // Object we are storing into.
const Address& dest, // Where we are storing into.
Register value, // Value we are storing.
- CanBeSmi can_be_smi = kValueCanBeSmi) override;
+ CanBeSmi can_be_smi = kValueCanBeSmi,
+ MemoryOrder memory_order = kRelaxedNonAtomic) override;
void StoreBarrier(Register object, // Object we are storing into.
Register value, // Value we are storing.
CanBeSmi can_be_smi);
@@ -807,18 +809,25 @@
Register value, // Value we are storing.
CanBeSmi can_be_smi = kValueCanBeSmi);
+ void StoreIntoObjectNoBarrier(
+ Register object,
+ const Address& dest,
+ Register value,
+ MemoryOrder memory_order = kRelaxedNonAtomic) override;
+ void StoreCompressedIntoObjectNoBarrier(
+ Register object,
+ const Address& dest,
+ Register value,
+ MemoryOrder memory_order = kRelaxedNonAtomic) override;
void StoreIntoObjectNoBarrier(Register object,
const Address& dest,
- Register value) override;
- void StoreCompressedIntoObjectNoBarrier(Register object,
- const Address& dest,
- Register value) override;
- void StoreIntoObjectNoBarrier(Register object,
- const Address& dest,
- const Object& value);
- void StoreCompressedIntoObjectNoBarrier(Register object,
- const Address& dest,
- const Object& value);
+ const Object& value,
+ MemoryOrder memory_order = kRelaxedNonAtomic);
+ void StoreCompressedIntoObjectNoBarrier(
+ Register object,
+ const Address& dest,
+ const Object& value,
+ MemoryOrder memory_order = kRelaxedNonAtomic);
// Stores a non-tagged value into a heap object.
void StoreInternalPointer(Register object,
@@ -1063,7 +1072,9 @@
TsanLoadAcquire(Address(address, offset));
#endif
}
- void StoreRelease(Register src, Register address, int32_t offset = 0) {
+ void StoreRelease(Register src,
+ Register address,
+ int32_t offset = 0) override {
// On intel stores have store-release behavior (i.e. stores are not
// re-ordered with other stores).
movq(Address(address, offset), src);
@@ -1071,6 +1082,16 @@
TsanStoreRelease(Address(address, offset));
#endif
}
+ void StoreReleaseCompressed(Register src,
+ Register address,
+ int32_t offset = 0) {
+ // On intel stores have store-release behavior (i.e. stores are not
+ // re-ordered with other stores).
+ OBJ(mov)(Address(address, offset), src);
+#if defined(USING_THREAD_SANITIZER)
+ TsanStoreRelease(Address(address, offset));
+#endif
+ }
void CompareWithFieldValue(Register value, FieldAddress address) {
cmpq(value, address);
diff --git a/runtime/vm/compiler/backend/il.cc b/runtime/vm/compiler/backend/il.cc
index d15f357..215b0cc 100644
--- a/runtime/vm/compiler/backend/il.cc
+++ b/runtime/vm/compiler/backend/il.cc
@@ -2825,6 +2825,7 @@
switch (call->function().recognized_kind()) {
case MethodRecognizer::kByteDataFactory:
case MethodRecognizer::kLinkedHashBase_getData:
+ case MethodRecognizer::kImmutableLinkedHashBase_getData:
return flow_graph->constant_null();
default:
break;
diff --git a/runtime/vm/compiler/backend/il.h b/runtime/vm/compiler/backend/il.h
index f28d741..38823bd 100644
--- a/runtime/vm/compiler/backend/il.h
+++ b/runtime/vm/compiler/backend/il.h
@@ -5354,10 +5354,13 @@
Value* value,
StoreBarrierType emit_store_barrier,
const InstructionSource& source,
- Kind kind = Kind::kOther)
+ Kind kind = Kind::kOther,
+ compiler::Assembler::MemoryOrder memory_order =
+ compiler::Assembler::kRelaxedNonAtomic)
: TemplateInstruction(source),
slot_(slot),
emit_store_barrier_(emit_store_barrier),
+ memory_order_(memory_order),
token_pos_(source.token_pos),
is_initialization_(kind == Kind::kInitializing) {
SetInputAt(kInstancePos, instance);
@@ -5464,6 +5467,7 @@
const Slot& slot_;
StoreBarrierType emit_store_barrier_;
+ compiler::Assembler::MemoryOrder memory_order_;
const TokenPosition token_pos_;
// Marks initializing stores. E.g. in the constructor.
const bool is_initialization_;
diff --git a/runtime/vm/compiler/backend/il_arm.cc b/runtime/vm/compiler/backend/il_arm.cc
index 7b56c73..b211af2 100644
--- a/runtime/vm/compiler/backend/il_arm.cc
+++ b/runtime/vm/compiler/backend/il_arm.cc
@@ -156,8 +156,9 @@
LocationSummary* MemoryCopyInstr::MakeLocationSummary(Zone* zone,
bool opt) const {
const intptr_t kNumInputs = 5;
- const intptr_t kNumTemps =
- element_size_ == 16 ? 4 : element_size_ == 8 ? 2 : 1;
+ const intptr_t kNumTemps = element_size_ == 16 ? 4
+ : element_size_ == 8 ? 2
+ : 1;
LocationSummary* locs = new (zone)
LocationSummary(zone, kNumInputs, kNumTemps, LocationSummary::kNoCall);
locs->set_in(kSrcPos, Location::WritableRegister());
@@ -2841,6 +2842,7 @@
ASSERT(offset_in_bytes > 0); // Field is finalized and points after header.
if (slot().representation() != kTagged) {
+ ASSERT(memory_order_ != compiler::AssemblerBase::kRelease);
auto const rep = slot().representation();
ASSERT(RepresentationUtils::IsUnboxedInteger(rep));
const size_t value_size = RepresentationUtils::ValueSize(rep);
@@ -2862,6 +2864,7 @@
}
if (IsUnboxedDartFieldStore() && compiler->is_optimizing()) {
+ ASSERT(memory_order_ != compiler::AssemblerBase::kRelease);
const intptr_t cid = slot().field().UnboxedFieldCid();
const DRegister value = EvenDRegisterOf(locs()->in(kValuePos).fpu_reg());
@@ -2940,6 +2943,7 @@
}
if (IsPotentialUnboxedDartFieldStore()) {
+ ASSERT(memory_order_ != compiler::AssemblerBase::kRelease);
const Register value_reg = locs()->in(kValuePos).reg();
const Register temp = locs()->temp(0).reg();
const Register temp2 = locs()->temp(1).reg();
@@ -3021,15 +3025,16 @@
if (ShouldEmitStoreBarrier()) {
const Register value_reg = locs()->in(kValuePos).reg();
__ StoreIntoObjectOffset(instance_reg, offset_in_bytes, value_reg,
- CanValueBeSmi());
+ CanValueBeSmi(), memory_order_);
} else {
if (locs()->in(kValuePos).IsConstant()) {
__ StoreIntoObjectNoBarrierOffset(instance_reg, offset_in_bytes,
- locs()->in(kValuePos).constant());
+ locs()->in(kValuePos).constant(),
+ memory_order_);
} else {
const Register value_reg = locs()->in(kValuePos).reg();
__ StoreIntoObjectNoBarrierOffset(instance_reg, offset_in_bytes,
- value_reg);
+ value_reg, memory_order_);
}
}
__ Bind(&skip_store);
@@ -5681,7 +5686,7 @@
void MathMinMaxInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
ASSERT((op_kind() == MethodRecognizer::kMathMin) ||
(op_kind() == MethodRecognizer::kMathMax));
- const intptr_t is_min = (op_kind() == MethodRecognizer::kMathMin);
+ const bool is_min = (op_kind() == MethodRecognizer::kMathMin);
if (result_cid() == kDoubleCid) {
compiler::Label done, returns_nan, are_equal;
const DRegister left = EvenDRegisterOf(locs()->in(0).fpu_reg());
diff --git a/runtime/vm/compiler/backend/il_arm64.cc b/runtime/vm/compiler/backend/il_arm64.cc
index cf075b0..0a7f6fa 100644
--- a/runtime/vm/compiler/backend/il_arm64.cc
+++ b/runtime/vm/compiler/backend/il_arm64.cc
@@ -2410,6 +2410,7 @@
ASSERT(offset_in_bytes > 0); // Field is finalized and points after header.
if (slot().representation() != kTagged) {
+ ASSERT(memory_order_ != compiler::AssemblerBase::kRelease);
ASSERT(RepresentationUtils::IsUnboxedInteger(slot().representation()));
const Register value = locs()->in(kValuePos).reg();
__ Comment("NativeUnboxedStoreInstanceFieldInstr");
@@ -2420,6 +2421,7 @@
}
if (IsUnboxedDartFieldStore() && compiler->is_optimizing()) {
+ ASSERT(memory_order_ != compiler::AssemblerBase::kRelease);
const VRegister value = locs()->in(kValuePos).fpu_reg();
const intptr_t cid = slot().field().UnboxedFieldCid();
@@ -2489,6 +2491,7 @@
}
if (IsPotentialUnboxedDartFieldStore()) {
+ ASSERT(memory_order_ != compiler::AssemblerBase::kRelease);
const Register value_reg = locs()->in(kValuePos).reg();
const Register temp = locs()->temp(0).reg();
const Register temp2 = locs()->temp(1).reg();
@@ -2574,28 +2577,30 @@
const Register value_reg = locs()->in(kValuePos).reg();
if (!compressed) {
__ StoreIntoObjectOffset(instance_reg, offset_in_bytes, value_reg,
- CanValueBeSmi());
+ CanValueBeSmi(), memory_order_);
} else {
__ StoreCompressedIntoObjectOffset(instance_reg, offset_in_bytes,
- value_reg, CanValueBeSmi());
+ value_reg, CanValueBeSmi(),
+ memory_order_);
}
} else {
if (locs()->in(kValuePos).IsConstant()) {
const auto& value = locs()->in(kValuePos).constant();
if (!compressed) {
- __ StoreIntoObjectOffsetNoBarrier(instance_reg, offset_in_bytes, value);
+ __ StoreIntoObjectOffsetNoBarrier(instance_reg, offset_in_bytes, value,
+ memory_order_);
} else {
- __ StoreCompressedIntoObjectOffsetNoBarrier(instance_reg,
- offset_in_bytes, value);
+ __ StoreCompressedIntoObjectOffsetNoBarrier(
+ instance_reg, offset_in_bytes, value, memory_order_);
}
} else {
const Register value_reg = locs()->in(kValuePos).reg();
if (!compressed) {
__ StoreIntoObjectOffsetNoBarrier(instance_reg, offset_in_bytes,
- value_reg);
+ value_reg, memory_order_);
} else {
- __ StoreCompressedIntoObjectOffsetNoBarrier(instance_reg,
- offset_in_bytes, value_reg);
+ __ StoreCompressedIntoObjectOffsetNoBarrier(
+ instance_reg, offset_in_bytes, value_reg, memory_order_);
}
}
}
@@ -4008,10 +4013,9 @@
!stubs_in_vm_isolate;
LocationSummary* summary = new (zone) LocationSummary(
zone, kNumInputs, kNumTemps,
- ValueFitsSmi()
- ? LocationSummary::kNoCall
- : shared_slow_path_call ? LocationSummary::kCallOnSharedSlowPath
- : LocationSummary::kCallOnSlowPath);
+ ValueFitsSmi() ? LocationSummary::kNoCall
+ : shared_slow_path_call ? LocationSummary::kCallOnSharedSlowPath
+ : LocationSummary::kCallOnSlowPath);
summary->set_in(0, Location::RequiresRegister());
if (ValueFitsSmi()) {
summary->set_out(0, Location::RequiresRegister());
@@ -4727,7 +4731,7 @@
void MathMinMaxInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
ASSERT((op_kind() == MethodRecognizer::kMathMin) ||
(op_kind() == MethodRecognizer::kMathMax));
- const intptr_t is_min = (op_kind() == MethodRecognizer::kMathMin);
+ const bool is_min = (op_kind() == MethodRecognizer::kMathMin);
if (result_cid() == kDoubleCid) {
compiler::Label done, returns_nan, are_equal;
const VRegister left = locs()->in(0).fpu_reg();
diff --git a/runtime/vm/compiler/backend/il_ia32.cc b/runtime/vm/compiler/backend/il_ia32.cc
index 687529e..715362c 100644
--- a/runtime/vm/compiler/backend/il_ia32.cc
+++ b/runtime/vm/compiler/backend/il_ia32.cc
@@ -2135,6 +2135,7 @@
ASSERT(offset_in_bytes > 0); // Field is finalized and points after header.
if (slot().representation() != kTagged) {
+ ASSERT(memory_order_ != compiler::AssemblerBase::kRelease);
auto const rep = slot().representation();
ASSERT(RepresentationUtils::IsUnboxedInteger(rep));
const size_t value_size = RepresentationUtils::ValueSize(rep);
@@ -2156,6 +2157,7 @@
}
if (IsUnboxedDartFieldStore() && compiler->is_optimizing()) {
+ ASSERT(memory_order_ != compiler::AssemblerBase::kRelease);
XmmRegister value = locs()->in(kValuePos).fpu_reg();
Register temp = locs()->temp(0).reg();
Register temp2 = locs()->temp(1).reg();
@@ -2207,6 +2209,7 @@
}
if (IsPotentialUnboxedDartFieldStore()) {
+ ASSERT(memory_order_ != compiler::AssemblerBase::kRelease);
__ Comment("PotentialUnboxedStore");
Register value_reg = locs()->in(kValuePos).reg();
Register temp = locs()->temp(0).reg();
@@ -2294,17 +2297,17 @@
Register value_reg = locs()->in(kValuePos).reg();
__ StoreIntoObject(instance_reg,
compiler::FieldAddress(instance_reg, offset_in_bytes),
- value_reg, CanValueBeSmi());
+ value_reg, CanValueBeSmi(), memory_order_);
} else {
if (locs()->in(kValuePos).IsConstant()) {
__ StoreIntoObjectNoBarrier(
instance_reg, compiler::FieldAddress(instance_reg, offset_in_bytes),
- locs()->in(kValuePos).constant());
+ locs()->in(kValuePos).constant(), memory_order_);
} else {
Register value_reg = locs()->in(kValuePos).reg();
__ StoreIntoObjectNoBarrier(
instance_reg, compiler::FieldAddress(instance_reg, offset_in_bytes),
- value_reg);
+ value_reg, memory_order_);
}
}
__ Bind(&skip_store);
@@ -4833,7 +4836,7 @@
void MathMinMaxInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
ASSERT((op_kind() == MethodRecognizer::kMathMin) ||
(op_kind() == MethodRecognizer::kMathMax));
- const intptr_t is_min = (op_kind() == MethodRecognizer::kMathMin);
+ const bool is_min = (op_kind() == MethodRecognizer::kMathMin);
if (result_cid() == kDoubleCid) {
compiler::Label done, returns_nan, are_equal;
XmmRegister left = locs()->in(0).fpu_reg();
diff --git a/runtime/vm/compiler/backend/il_x64.cc b/runtime/vm/compiler/backend/il_x64.cc
index da9b346..09a4344 100644
--- a/runtime/vm/compiler/backend/il_x64.cc
+++ b/runtime/vm/compiler/backend/il_x64.cc
@@ -2486,6 +2486,7 @@
ASSERT(offset_in_bytes > 0); // Field is finalized and points after header.
if (slot().representation() != kTagged) {
+ ASSERT(memory_order_ != compiler::AssemblerBase::kRelease);
ASSERT(RepresentationUtils::IsUnboxedInteger(slot().representation()));
const Register value = locs()->in(kValuePos).reg();
__ Comment("NativeUnboxedStoreInstanceFieldInstr");
@@ -2496,6 +2497,7 @@
}
if (IsUnboxedDartFieldStore() && compiler->is_optimizing()) {
+ ASSERT(memory_order_ != compiler::AssemblerBase::kRelease);
XmmRegister value = locs()->in(kValuePos).fpu_reg();
const intptr_t cid = slot().field().UnboxedFieldCid();
@@ -2572,6 +2574,7 @@
}
if (IsPotentialUnboxedDartFieldStore()) {
+ ASSERT(memory_order_ != compiler::AssemblerBase::kRelease);
Register value_reg = locs()->in(kValuePos).reg();
Register temp = locs()->temp(0).reg();
Register temp2 = locs()->temp(1).reg();
@@ -2659,11 +2662,11 @@
if (!compressed) {
__ StoreIntoObject(instance_reg,
compiler::FieldAddress(instance_reg, offset_in_bytes),
- value_reg, CanValueBeSmi());
+ value_reg, CanValueBeSmi(), memory_order_);
} else {
__ StoreCompressedIntoObject(
instance_reg, compiler::FieldAddress(instance_reg, offset_in_bytes),
- value_reg, CanValueBeSmi());
+ value_reg, CanValueBeSmi(), memory_order_);
}
} else {
if (locs()->in(kValuePos).IsConstant()) {
@@ -2671,22 +2674,22 @@
if (!compressed) {
__ StoreIntoObjectNoBarrier(
instance_reg, compiler::FieldAddress(instance_reg, offset_in_bytes),
- value);
+ value, memory_order_);
} else {
__ StoreCompressedIntoObjectNoBarrier(
instance_reg, compiler::FieldAddress(instance_reg, offset_in_bytes),
- value);
+ value, memory_order_);
}
} else {
Register value_reg = locs()->in(kValuePos).reg();
if (!compressed) {
__ StoreIntoObjectNoBarrier(
instance_reg, compiler::FieldAddress(instance_reg, offset_in_bytes),
- value_reg);
+ value_reg, memory_order_);
} else {
__ StoreCompressedIntoObjectNoBarrier(
instance_reg, compiler::FieldAddress(instance_reg, offset_in_bytes),
- value_reg);
+ value_reg, memory_order_);
}
}
}
diff --git a/runtime/vm/compiler/backend/range_analysis.cc b/runtime/vm/compiler/backend/range_analysis.cc
index 17a1c15..7d35302 100644
--- a/runtime/vm/compiler/backend/range_analysis.cc
+++ b/runtime/vm/compiler/backend/range_analysis.cc
@@ -2789,7 +2789,9 @@
break;
case Slot::Kind::kLinkedHashBase_index:
+ case Slot::Kind::kImmutableLinkedHashBase_index:
case Slot::Kind::kLinkedHashBase_data:
+ case Slot::Kind::kImmutableLinkedHashBase_data:
case Slot::Kind::kGrowableObjectArray_data:
case Slot::Kind::kContext_parent:
case Slot::Kind::kTypeArguments:
diff --git a/runtime/vm/compiler/backend/slot.cc b/runtime/vm/compiler/backend/slot.cc
index 9f84201..15f0080 100644
--- a/runtime/vm/compiler/backend/slot.cc
+++ b/runtime/vm/compiler/backend/slot.cc
@@ -201,7 +201,9 @@
UNBOXED_NATIVE_SLOTS_LIST(UNBOXED_NATIVE_SLOT_CASE)
#undef UNBOXED_NATIVE_SLOT_CASE
case Slot::Kind::kLinkedHashBase_index:
+ case Slot::Kind::kImmutableLinkedHashBase_index:
case Slot::Kind::kLinkedHashBase_data:
+ case Slot::Kind::kImmutableLinkedHashBase_data:
case Slot::Kind::kLinkedHashBase_hash_mask:
case Slot::Kind::kLinkedHashBase_used_data:
case Slot::Kind::kLinkedHashBase_deleted_keys:
diff --git a/runtime/vm/compiler/backend/slot.h b/runtime/vm/compiler/backend/slot.h
index 27adf00..a31e9a9 100644
--- a/runtime/vm/compiler/backend/slot.h
+++ b/runtime/vm/compiler/backend/slot.h
@@ -61,6 +61,8 @@
V(Closure, UntaggedClosure, function_type_arguments, TypeArguments, FINAL) \
V(FunctionType, UntaggedFunctionType, type_parameters, TypeParameters, \
FINAL) \
+ V(ImmutableLinkedHashBase, UntaggedLinkedHashBase, index, \
+ TypedDataUint32Array, VAR) \
V(Instance, UntaggedInstance, native_fields_array, Dynamic, VAR) \
V(Type, UntaggedType, arguments, TypeArguments, FINAL) \
V(TypeParameters, UntaggedTypeParameters, flags, Array, FINAL) \
@@ -98,6 +100,8 @@
V(String, UntaggedString, length, Smi, FINAL) \
V(LinkedHashBase, UntaggedLinkedHashBase, index, TypedDataUint32Array, VAR) \
V(LinkedHashBase, UntaggedLinkedHashBase, data, Array, VAR) \
+ V(ImmutableLinkedHashBase, UntaggedLinkedHashBase, data, ImmutableArray, \
+ FINAL) \
V(LinkedHashBase, UntaggedLinkedHashBase, hash_mask, Smi, VAR) \
V(LinkedHashBase, UntaggedLinkedHashBase, used_data, Smi, VAR) \
V(LinkedHashBase, UntaggedLinkedHashBase, deleted_keys, Smi, VAR) \
diff --git a/runtime/vm/compiler/frontend/base_flow_graph_builder.cc b/runtime/vm/compiler/frontend/base_flow_graph_builder.cc
index a34ae49..34d3ebf 100644
--- a/runtime/vm/compiler/frontend/base_flow_graph_builder.cc
+++ b/runtime/vm/compiler/frontend/base_flow_graph_builder.cc
@@ -506,7 +506,8 @@
const Slot& slot,
StoreInstanceFieldInstr::Kind
kind /* = StoreInstanceFieldInstr::Kind::kOther */,
- StoreBarrierType emit_store_barrier /* = kEmitStoreBarrier */) {
+ StoreBarrierType emit_store_barrier /* = kEmitStoreBarrier */,
+ compiler::Assembler::MemoryOrder memory_order /* = kRelaxed */) {
Value* value = Pop();
if (value->BindsToConstant()) {
emit_store_barrier = kNoStoreBarrier;
diff --git a/runtime/vm/compiler/frontend/base_flow_graph_builder.h b/runtime/vm/compiler/frontend/base_flow_graph_builder.h
index 93875e0..2ca80a6 100644
--- a/runtime/vm/compiler/frontend/base_flow_graph_builder.h
+++ b/runtime/vm/compiler/frontend/base_flow_graph_builder.h
@@ -196,14 +196,18 @@
const Slot& slot,
StoreInstanceFieldInstr::Kind kind =
StoreInstanceFieldInstr::Kind::kOther,
- StoreBarrierType emit_store_barrier = kEmitStoreBarrier);
+ StoreBarrierType emit_store_barrier = kEmitStoreBarrier,
+ compiler::Assembler::MemoryOrder memory_order =
+ compiler::Assembler::kRelaxedNonAtomic);
Fragment StoreNativeField(
const Slot& slot,
StoreInstanceFieldInstr::Kind kind =
StoreInstanceFieldInstr::Kind::kOther,
- StoreBarrierType emit_store_barrier = kEmitStoreBarrier) {
+ StoreBarrierType emit_store_barrier = kEmitStoreBarrier,
+ compiler::Assembler::MemoryOrder memory_order =
+ compiler::Assembler::kRelaxedNonAtomic) {
return StoreNativeField(TokenPosition::kNoSource, slot, kind,
- emit_store_barrier);
+ emit_store_barrier, memory_order);
}
Fragment StoreInstanceField(
const Field& field,
diff --git a/runtime/vm/compiler/frontend/constant_reader.cc b/runtime/vm/compiler/frontend/constant_reader.cc
index 22efe3c..2ed7d14 100644
--- a/runtime/vm/compiler/frontend/constant_reader.cc
+++ b/runtime/vm/compiler/frontend/constant_reader.cc
@@ -4,6 +4,8 @@
#include "vm/compiler/frontend/constant_reader.h"
+#include "vm/object_store.h"
+
namespace dart {
namespace kernel {
@@ -226,9 +228,9 @@
break;
}
case kListConstant: {
- const auto& corelib = Library::Handle(Z, Library::CoreLibrary());
- const auto& list_class =
- Class::Handle(Z, corelib.LookupClassAllowPrivate(Symbols::_List()));
+ const auto& list_class = Class::Handle(
+ Z, H.isolate_group()->object_store()->immutable_array_class());
+ ASSERT(!list_class.IsNull());
// Build type from the raw bytes (needs temporary translator).
TypeTranslator type_translator(
&reader, this, active_class_, /* finalize = */ true,
@@ -259,6 +261,108 @@
instance = array.ptr();
break;
}
+ case kMapConstant: {
+ const auto& map_class = Class::Handle(
+ Z,
+ H.isolate_group()->object_store()->immutable_linked_hash_map_class());
+ ASSERT(!map_class.IsNull());
+
+ // Build types from the raw bytes (needs temporary translator).
+ TypeTranslator type_translator(
+ &reader, this, active_class_, /* finalize = */ true,
+ active_class_->RequireConstCanonicalTypeErasure(null_safety),
+ /* in_constant_context = */ true);
+ auto& type_arguments =
+ TypeArguments::Handle(Z, TypeArguments::New(2, Heap::kOld));
+ AbstractType& type = type_translator.BuildType();
+ type_arguments.SetTypeAt(0, type);
+ type = type_translator.BuildType().ptr();
+ type_arguments.SetTypeAt(1, type);
+
+ // Instantiate class.
+ type = Type::New(map_class, type_arguments);
+ type = ClassFinalizer::FinalizeType(type, ClassFinalizer::kCanonicalize);
+ type_arguments = type.arguments();
+
+ // Fill map with constant elements.
+ const auto& map = LinkedHashMap::Handle(
+ Z, ImmutableLinkedHashMap::NewUninitialized(Heap::kOld));
+ ASSERT_EQUAL(map.GetClassId(), kImmutableLinkedHashMapCid);
+ map.SetTypeArguments(type_arguments);
+ const intptr_t length = reader.ReadUInt();
+ const intptr_t used_data = (length << 1);
+ map.set_used_data(used_data);
+
+ const intptr_t data_size = Utils::RoundUpToPowerOfTwo(used_data);
+ const auto& data = Array::Handle(Z, Array::New(data_size));
+ map.set_data(data);
+
+ map.set_deleted_keys(0);
+ map.ComputeAndSetHashMask();
+
+ Instance& constant = Instance::Handle(Z);
+ for (intptr_t j = 0; j < used_data; ++j) {
+ // Recurse into lazily evaluating all "sub" constants
+ // needed to evaluate the current constant.
+ const intptr_t entry_index = reader.ReadUInt();
+ ASSERT(entry_index < constant_offset); // DAG!
+ constant = ReadConstant(entry_index);
+ data.SetAt(j, constant);
+ }
+
+ instance = map.ptr();
+ break;
+ }
+ case kSetConstant: {
+ const auto& set_class = Class::Handle(
+ Z,
+ H.isolate_group()->object_store()->immutable_linked_hash_set_class());
+ ASSERT(!set_class.IsNull());
+
+ // Build types from the raw bytes (needs temporary translator).
+ TypeTranslator type_translator(
+ &reader, this, active_class_, /* finalize = */ true,
+ active_class_->RequireConstCanonicalTypeErasure(null_safety),
+ /* in_constant_context = */ true);
+ auto& type_arguments =
+ TypeArguments::Handle(Z, TypeArguments::New(1, Heap::kOld));
+ AbstractType& type = type_translator.BuildType();
+ type_arguments.SetTypeAt(0, type);
+
+ // Instantiate class.
+ type = Type::New(set_class, type_arguments);
+ type = ClassFinalizer::FinalizeType(type, ClassFinalizer::kCanonicalize);
+ type_arguments = type.arguments();
+
+ // Fill set with constant elements.
+ const auto& set = LinkedHashSet::Handle(
+ Z, ImmutableLinkedHashSet::NewUninitialized(Heap::kOld));
+ ASSERT_EQUAL(set.GetClassId(), kImmutableLinkedHashSetCid);
+ set.SetTypeArguments(type_arguments);
+ const intptr_t length = reader.ReadUInt();
+ const intptr_t used_data = length;
+ set.set_used_data(used_data);
+
+ const intptr_t data_size = Utils::RoundUpToPowerOfTwo(used_data);
+ const auto& data = Array::Handle(Z, Array::New(data_size));
+ set.set_data(data);
+
+ set.set_deleted_keys(0);
+ set.ComputeAndSetHashMask();
+
+ Instance& constant = Instance::Handle(Z);
+ for (intptr_t j = 0; j < used_data; ++j) {
+ // Recurse into lazily evaluating all "sub" constants
+ // needed to evaluate the current constant.
+ const intptr_t entry_index = reader.ReadUInt();
+ ASSERT(entry_index < constant_offset); // DAG!
+ constant = ReadConstant(entry_index);
+ data.SetAt(j, constant);
+ }
+
+ instance = set.ptr();
+ break;
+ }
case kInstanceConstant: {
const NameIndex index = reader.ReadCanonicalNameReference();
const auto& klass = Class::Handle(Z, H.LookupClassByKernelClass(index));
@@ -374,12 +478,9 @@
break;
}
default:
- // Set literals (kSetConstant) are currently desugared in the frontend
- // and will not reach the VM. See http://dartbug.com/35124 for some
- // discussion. Map constants (kMapConstant ) are already lowered to
- // InstanceConstant or ListConstant. We should never see unevaluated
- // constants (kUnevaluatedConstant) in the constant table, they should
- // have been fully evaluated before we get them.
+ // We should never see unevaluated constants (kUnevaluatedConstant) in
+ // the constant table, they should have been fully evaluated before we
+ // get them.
H.ReportError(script_, TokenPosition::kNoSource,
"Cannot lazily read constant: unexpected kernel tag (%" Pd
")",
diff --git a/runtime/vm/compiler/frontend/kernel_to_il.cc b/runtime/vm/compiler/frontend/kernel_to_il.cc
index ad2f103..52d7171 100644
--- a/runtime/vm/compiler/frontend/kernel_to_il.cc
+++ b/runtime/vm/compiler/frontend/kernel_to_il.cc
@@ -883,6 +883,9 @@
case MethodRecognizer::kLinkedHashBase_setUsedData:
case MethodRecognizer::kLinkedHashBase_getDeletedKeys:
case MethodRecognizer::kLinkedHashBase_setDeletedKeys:
+ case MethodRecognizer::kImmutableLinkedHashBase_getData:
+ case MethodRecognizer::kImmutableLinkedHashBase_getIndex:
+ case MethodRecognizer::kImmutableLinkedHashBase_setIndexStoreRelease:
case MethodRecognizer::kWeakProperty_getKey:
case MethodRecognizer::kWeakProperty_setKey:
case MethodRecognizer::kWeakProperty_getValue:
@@ -1190,6 +1193,11 @@
body += LoadLocal(parsed_function_->RawParameterVariable(0));
body += LoadNativeField(Slot::LinkedHashBase_index());
break;
+ case MethodRecognizer::kImmutableLinkedHashBase_getIndex:
+ ASSERT_EQUAL(function.NumParameters(), 1);
+ body += LoadLocal(parsed_function_->RawParameterVariable(0));
+ body += LoadNativeField(Slot::ImmutableLinkedHashBase_index());
+ break;
case MethodRecognizer::kLinkedHashBase_setIndex:
ASSERT_EQUAL(function.NumParameters(), 2);
body += LoadLocal(parsed_function_->RawParameterVariable(0));
@@ -1197,11 +1205,28 @@
body += StoreNativeField(Slot::LinkedHashBase_index());
body += NullConstant();
break;
+ case MethodRecognizer::kImmutableLinkedHashBase_setIndexStoreRelease:
+ ASSERT_EQUAL(function.NumParameters(), 2);
+ body += LoadLocal(parsed_function_->RawParameterVariable(0));
+ body += LoadLocal(parsed_function_->RawParameterVariable(1));
+ // Uses a store-release barrier so that other isolates will see the
+ // contents of the index after seeing the index itself.
+ body +=
+ StoreNativeField(Slot::ImmutableLinkedHashBase_index(),
+ StoreInstanceFieldInstr::Kind::kOther,
+ kEmitStoreBarrier, compiler::Assembler::kRelease);
+ body += NullConstant();
+ break;
case MethodRecognizer::kLinkedHashBase_getData:
ASSERT_EQUAL(function.NumParameters(), 1);
body += LoadLocal(parsed_function_->RawParameterVariable(0));
body += LoadNativeField(Slot::LinkedHashBase_data());
break;
+ case MethodRecognizer::kImmutableLinkedHashBase_getData:
+ ASSERT(function.NumParameters() == 1);
+ body += LoadLocal(parsed_function_->RawParameterVariable(0));
+ body += LoadNativeField(Slot::ImmutableLinkedHashBase_data());
+ break;
case MethodRecognizer::kLinkedHashBase_setData:
ASSERT_EQUAL(function.NumParameters(), 2);
body += LoadLocal(parsed_function_->RawParameterVariable(0));
diff --git a/runtime/vm/compiler/frontend/kernel_translation_helper.cc b/runtime/vm/compiler/frontend/kernel_translation_helper.cc
index a3b4dc2..af78cd4 100644
--- a/runtime/vm/compiler/frontend/kernel_translation_helper.cc
+++ b/runtime/vm/compiler/frontend/kernel_translation_helper.cc
@@ -27,6 +27,7 @@
: thread_(thread),
zone_(thread->zone()),
isolate_(thread->isolate()),
+ isolate_group_(thread->isolate_group()),
allocation_space_(Heap::kNew),
string_offsets_(TypedData::Handle(Z)),
string_data_(ExternalTypedData::Handle(Z)),
@@ -42,6 +43,7 @@
: thread_(thread),
zone_(thread->zone()),
isolate_(thread->isolate()),
+ isolate_group_(thread->isolate_group()),
allocation_space_(space),
string_offsets_(TypedData::Handle(Z)),
string_data_(ExternalTypedData::Handle(Z)),
@@ -2180,7 +2182,7 @@
void KernelReaderHelper::SkipInterfaceType(bool simple) {
ReadNullability(); // read nullability.
- ReadUInt(); // read klass_name.
+ ReadUInt(); // read klass_name.
if (!simple) {
SkipListOfDartTypes(); // read list of types.
}
@@ -2364,14 +2366,14 @@
SkipExpression(); // read value.
return;
case kSuperPropertyGet:
- ReadPosition(); // read position.
- SkipName(); // read name.
+ ReadPosition(); // read position.
+ SkipName(); // read name.
SkipInterfaceMemberNameReference(); // read interface_target_reference.
return;
case kSuperPropertySet:
- ReadPosition(); // read position.
- SkipName(); // read name.
- SkipExpression(); // read value.
+ ReadPosition(); // read position.
+ SkipName(); // read name.
+ SkipExpression(); // read value.
SkipInterfaceMemberNameReference(); // read interface_target_reference.
return;
case kStaticGet:
@@ -2426,9 +2428,9 @@
SkipExpression(); // read expression.
return;
case kSuperMethodInvocation:
- ReadPosition(); // read position.
- SkipName(); // read name.
- SkipArguments(); // read arguments.
+ ReadPosition(); // read position.
+ SkipName(); // read name.
+ SkipArguments(); // read arguments.
SkipInterfaceMemberNameReference(); // read interface_target_reference.
return;
case kStaticInvocation:
@@ -2464,7 +2466,7 @@
SkipListOfExpressions(); // read list of expressions.
return;
case kIsExpression:
- ReadPosition(); // read position.
+ ReadPosition(); // read position.
if (translation_helper_.info().kernel_binary_version() >= 38) {
SkipFlags(); // read flags.
}
@@ -2852,8 +2854,8 @@
// can store them as tighly as possible.
AlternativeReadingScope alt(&reader_);
SetOffset(GetOffsetForSourceInfo(index));
- SkipBytes(ReadUInt()); // skip uri.
- SkipBytes(ReadUInt()); // skip source.
+ SkipBytes(ReadUInt()); // skip uri.
+ SkipBytes(ReadUInt()); // skip source.
const intptr_t line_start_count = ReadUInt();
return reader_.ReadLineStartsData(line_start_count);
}
diff --git a/runtime/vm/compiler/frontend/kernel_translation_helper.h b/runtime/vm/compiler/frontend/kernel_translation_helper.h
index e9a4807..39d9d18 100644
--- a/runtime/vm/compiler/frontend/kernel_translation_helper.h
+++ b/runtime/vm/compiler/frontend/kernel_translation_helper.h
@@ -41,6 +41,8 @@
Isolate* isolate() { return isolate_; }
+ IsolateGroup* isolate_group() { return isolate_group_; }
+
Heap::Space allocation_space() { return allocation_space_; }
// Access to strings.
@@ -232,6 +234,7 @@
Thread* thread_;
Zone* zone_;
Isolate* isolate_;
+ IsolateGroup* isolate_group_;
Heap::Space allocation_space_;
TypedData& string_offsets_;
diff --git a/runtime/vm/compiler/recognized_methods_list.h b/runtime/vm/compiler/recognized_methods_list.h
index 3142cb9..554d11b 100644
--- a/runtime/vm/compiler/recognized_methods_list.h
+++ b/runtime/vm/compiler/recognized_methods_list.h
@@ -13,7 +13,7 @@
// debug mode to get the correct fingerprint from the mismatch error.
#define OTHER_RECOGNIZED_LIST(V) \
V(::, identical, ObjectIdentical, 0x04168315) \
- V(ClassID, getID, ClassIDgetID, 0xbe1d6669) \
+ V(ClassID, getID, ClassIDgetID, 0xdc8b888a) \
V(Object, Object., ObjectConstructor, 0xab6d6cfa) \
V(List, ., ListFactory, 0xbc820cf9) \
V(_List, ., ObjectArrayAllocate, 0xd693eee6) \
@@ -174,6 +174,12 @@
V(_HashVMBase, set:_hashMask, LinkedHashBase_setHashMask, 0xbbcebb58) \
V(_HashVMBase, get:_deletedKeys, LinkedHashBase_getDeletedKeys, 0x510dc4a0) \
V(_HashVMBase, set:_deletedKeys, LinkedHashBase_setDeletedKeys, 0xbdcdb85c) \
+ V(_HashVMImmutableBase, get:_data, ImmutableLinkedHashBase_getData, \
+ 0x780e14ad) \
+ V(_HashVMImmutableBase, get:_indexNullable, \
+ ImmutableLinkedHashBase_getIndex, 0xfd877bfb) \
+ V(_HashVMImmutableBase, set:_index, \
+ ImmutableLinkedHashBase_setIndexStoreRelease, 0xa2be9418) \
V(_WeakProperty, get:key, WeakProperty_getKey, 0xde00e462) \
V(_WeakProperty, set:key, WeakProperty_setKey, 0x963a095f) \
V(_WeakProperty, get:value, WeakProperty_getValue, 0xd2f28aae) \
diff --git a/runtime/vm/compiler/runtime_api.h b/runtime/vm/compiler/runtime_api.h
index ba5d79b..d2e9510 100644
--- a/runtime/vm/compiler/runtime_api.h
+++ b/runtime/vm/compiler/runtime_api.h
@@ -648,6 +648,12 @@
static word InstanceSize();
};
+class ImmutableLinkedHashBase : public LinkedHashBase {
+ public:
+ // The data slot is an immutable list and final in immutable maps and sets.
+ static word data_offset();
+};
+
class LinkedHashMap : public LinkedHashBase {
public:
FINAL_CLASS();
diff --git a/runtime/vm/compiler/runtime_offsets_extracted.h b/runtime/vm/compiler/runtime_offsets_extracted.h
index 8598191..72ec4ff 100644
--- a/runtime/vm/compiler/runtime_offsets_extracted.h
+++ b/runtime/vm/compiler/runtime_offsets_extracted.h
@@ -197,6 +197,8 @@
static constexpr dart::compiler::target::word Isolate_user_tag_offset = 20;
static constexpr dart::compiler::target::word LinkedHashBase_data_offset = 12;
static constexpr dart::compiler::target::word
+ ImmutableLinkedHashBase_data_offset = 12;
+static constexpr dart::compiler::target::word
LinkedHashBase_deleted_keys_offset = 20;
static constexpr dart::compiler::target::word LinkedHashBase_hash_mask_offset =
8;
@@ -742,6 +744,8 @@
static constexpr dart::compiler::target::word Isolate_user_tag_offset = 40;
static constexpr dart::compiler::target::word LinkedHashBase_data_offset = 24;
static constexpr dart::compiler::target::word
+ ImmutableLinkedHashBase_data_offset = 24;
+static constexpr dart::compiler::target::word
LinkedHashBase_deleted_keys_offset = 40;
static constexpr dart::compiler::target::word LinkedHashBase_hash_mask_offset =
16;
@@ -1292,6 +1296,8 @@
static constexpr dart::compiler::target::word Isolate_user_tag_offset = 20;
static constexpr dart::compiler::target::word LinkedHashBase_data_offset = 12;
static constexpr dart::compiler::target::word
+ ImmutableLinkedHashBase_data_offset = 12;
+static constexpr dart::compiler::target::word
LinkedHashBase_deleted_keys_offset = 20;
static constexpr dart::compiler::target::word LinkedHashBase_hash_mask_offset =
8;
@@ -1834,6 +1840,8 @@
static constexpr dart::compiler::target::word Isolate_user_tag_offset = 40;
static constexpr dart::compiler::target::word LinkedHashBase_data_offset = 24;
static constexpr dart::compiler::target::word
+ ImmutableLinkedHashBase_data_offset = 24;
+static constexpr dart::compiler::target::word
LinkedHashBase_deleted_keys_offset = 40;
static constexpr dart::compiler::target::word LinkedHashBase_hash_mask_offset =
16;
@@ -2385,6 +2393,8 @@
static constexpr dart::compiler::target::word Isolate_user_tag_offset = 40;
static constexpr dart::compiler::target::word LinkedHashBase_data_offset = 16;
static constexpr dart::compiler::target::word
+ ImmutableLinkedHashBase_data_offset = 16;
+static constexpr dart::compiler::target::word
LinkedHashBase_deleted_keys_offset = 24;
static constexpr dart::compiler::target::word LinkedHashBase_hash_mask_offset =
12;
@@ -2935,6 +2945,8 @@
static constexpr dart::compiler::target::word Isolate_user_tag_offset = 40;
static constexpr dart::compiler::target::word LinkedHashBase_data_offset = 16;
static constexpr dart::compiler::target::word
+ ImmutableLinkedHashBase_data_offset = 16;
+static constexpr dart::compiler::target::word
LinkedHashBase_deleted_keys_offset = 24;
static constexpr dart::compiler::target::word LinkedHashBase_hash_mask_offset =
12;
@@ -3482,6 +3494,8 @@
static constexpr dart::compiler::target::word Isolate_user_tag_offset = 16;
static constexpr dart::compiler::target::word LinkedHashBase_data_offset = 12;
static constexpr dart::compiler::target::word
+ ImmutableLinkedHashBase_data_offset = 12;
+static constexpr dart::compiler::target::word
LinkedHashBase_deleted_keys_offset = 20;
static constexpr dart::compiler::target::word LinkedHashBase_hash_mask_offset =
8;
@@ -4021,6 +4035,8 @@
static constexpr dart::compiler::target::word Isolate_user_tag_offset = 32;
static constexpr dart::compiler::target::word LinkedHashBase_data_offset = 24;
static constexpr dart::compiler::target::word
+ ImmutableLinkedHashBase_data_offset = 24;
+static constexpr dart::compiler::target::word
LinkedHashBase_deleted_keys_offset = 40;
static constexpr dart::compiler::target::word LinkedHashBase_hash_mask_offset =
16;
@@ -4565,6 +4581,8 @@
static constexpr dart::compiler::target::word Isolate_user_tag_offset = 16;
static constexpr dart::compiler::target::word LinkedHashBase_data_offset = 12;
static constexpr dart::compiler::target::word
+ ImmutableLinkedHashBase_data_offset = 12;
+static constexpr dart::compiler::target::word
LinkedHashBase_deleted_keys_offset = 20;
static constexpr dart::compiler::target::word LinkedHashBase_hash_mask_offset =
8;
@@ -5101,6 +5119,8 @@
static constexpr dart::compiler::target::word Isolate_user_tag_offset = 32;
static constexpr dart::compiler::target::word LinkedHashBase_data_offset = 24;
static constexpr dart::compiler::target::word
+ ImmutableLinkedHashBase_data_offset = 24;
+static constexpr dart::compiler::target::word
LinkedHashBase_deleted_keys_offset = 40;
static constexpr dart::compiler::target::word LinkedHashBase_hash_mask_offset =
16;
@@ -5646,6 +5666,8 @@
static constexpr dart::compiler::target::word Isolate_user_tag_offset = 32;
static constexpr dart::compiler::target::word LinkedHashBase_data_offset = 16;
static constexpr dart::compiler::target::word
+ ImmutableLinkedHashBase_data_offset = 16;
+static constexpr dart::compiler::target::word
LinkedHashBase_deleted_keys_offset = 24;
static constexpr dart::compiler::target::word LinkedHashBase_hash_mask_offset =
12;
@@ -6190,6 +6212,8 @@
static constexpr dart::compiler::target::word Isolate_user_tag_offset = 32;
static constexpr dart::compiler::target::word LinkedHashBase_data_offset = 16;
static constexpr dart::compiler::target::word
+ ImmutableLinkedHashBase_data_offset = 16;
+static constexpr dart::compiler::target::word
LinkedHashBase_deleted_keys_offset = 24;
static constexpr dart::compiler::target::word LinkedHashBase_hash_mask_offset =
12;
@@ -6761,6 +6785,8 @@
static constexpr dart::compiler::target::word AOT_LinkedHashBase_data_offset =
12;
static constexpr dart::compiler::target::word
+ AOT_ImmutableLinkedHashBase_data_offset = 12;
+static constexpr dart::compiler::target::word
AOT_LinkedHashBase_deleted_keys_offset = 20;
static constexpr dart::compiler::target::word
AOT_LinkedHashBase_hash_mask_offset = 8;
@@ -7370,6 +7396,8 @@
static constexpr dart::compiler::target::word AOT_LinkedHashBase_data_offset =
24;
static constexpr dart::compiler::target::word
+ AOT_ImmutableLinkedHashBase_data_offset = 24;
+static constexpr dart::compiler::target::word
AOT_LinkedHashBase_deleted_keys_offset = 40;
static constexpr dart::compiler::target::word
AOT_LinkedHashBase_hash_mask_offset = 16;
@@ -7985,6 +8013,8 @@
static constexpr dart::compiler::target::word AOT_LinkedHashBase_data_offset =
24;
static constexpr dart::compiler::target::word
+ AOT_ImmutableLinkedHashBase_data_offset = 24;
+static constexpr dart::compiler::target::word
AOT_LinkedHashBase_deleted_keys_offset = 40;
static constexpr dart::compiler::target::word
AOT_LinkedHashBase_hash_mask_offset = 16;
@@ -8597,6 +8627,8 @@
static constexpr dart::compiler::target::word AOT_LinkedHashBase_data_offset =
16;
static constexpr dart::compiler::target::word
+ AOT_ImmutableLinkedHashBase_data_offset = 16;
+static constexpr dart::compiler::target::word
AOT_LinkedHashBase_deleted_keys_offset = 24;
static constexpr dart::compiler::target::word
AOT_LinkedHashBase_hash_mask_offset = 12;
@@ -9208,6 +9240,8 @@
static constexpr dart::compiler::target::word AOT_LinkedHashBase_data_offset =
16;
static constexpr dart::compiler::target::word
+ AOT_ImmutableLinkedHashBase_data_offset = 16;
+static constexpr dart::compiler::target::word
AOT_LinkedHashBase_deleted_keys_offset = 24;
static constexpr dart::compiler::target::word
AOT_LinkedHashBase_hash_mask_offset = 12;
@@ -9815,6 +9849,8 @@
static constexpr dart::compiler::target::word AOT_LinkedHashBase_data_offset =
12;
static constexpr dart::compiler::target::word
+ AOT_ImmutableLinkedHashBase_data_offset = 12;
+static constexpr dart::compiler::target::word
AOT_LinkedHashBase_deleted_keys_offset = 20;
static constexpr dart::compiler::target::word
AOT_LinkedHashBase_hash_mask_offset = 8;
@@ -10417,6 +10453,8 @@
static constexpr dart::compiler::target::word AOT_LinkedHashBase_data_offset =
24;
static constexpr dart::compiler::target::word
+ AOT_ImmutableLinkedHashBase_data_offset = 24;
+static constexpr dart::compiler::target::word
AOT_LinkedHashBase_deleted_keys_offset = 40;
static constexpr dart::compiler::target::word
AOT_LinkedHashBase_hash_mask_offset = 16;
@@ -11025,6 +11063,8 @@
static constexpr dart::compiler::target::word AOT_LinkedHashBase_data_offset =
24;
static constexpr dart::compiler::target::word
+ AOT_ImmutableLinkedHashBase_data_offset = 24;
+static constexpr dart::compiler::target::word
AOT_LinkedHashBase_deleted_keys_offset = 40;
static constexpr dart::compiler::target::word
AOT_LinkedHashBase_hash_mask_offset = 16;
@@ -11630,6 +11670,8 @@
static constexpr dart::compiler::target::word AOT_LinkedHashBase_data_offset =
16;
static constexpr dart::compiler::target::word
+ AOT_ImmutableLinkedHashBase_data_offset = 16;
+static constexpr dart::compiler::target::word
AOT_LinkedHashBase_deleted_keys_offset = 24;
static constexpr dart::compiler::target::word
AOT_LinkedHashBase_hash_mask_offset = 12;
@@ -12234,6 +12276,8 @@
static constexpr dart::compiler::target::word AOT_LinkedHashBase_data_offset =
16;
static constexpr dart::compiler::target::word
+ AOT_ImmutableLinkedHashBase_data_offset = 16;
+static constexpr dart::compiler::target::word
AOT_LinkedHashBase_deleted_keys_offset = 24;
static constexpr dart::compiler::target::word
AOT_LinkedHashBase_hash_mask_offset = 12;
diff --git a/runtime/vm/compiler/runtime_offsets_list.h b/runtime/vm/compiler/runtime_offsets_list.h
index 2954ccb7..65505e1 100644
--- a/runtime/vm/compiler/runtime_offsets_list.h
+++ b/runtime/vm/compiler/runtime_offsets_list.h
@@ -157,6 +157,7 @@
NOT_IN_PRODUCT(FIELD(Isolate, single_step_offset)) \
FIELD(Isolate, user_tag_offset) \
FIELD(LinkedHashBase, data_offset) \
+ FIELD(ImmutableLinkedHashBase, data_offset) \
FIELD(LinkedHashBase, deleted_keys_offset) \
FIELD(LinkedHashBase, hash_mask_offset) \
FIELD(LinkedHashBase, index_offset) \
diff --git a/runtime/vm/message_snapshot.cc b/runtime/vm/message_snapshot.cc
index b2ff598..5b880d3 100644
--- a/runtime/vm/message_snapshot.cc
+++ b/runtime/vm/message_snapshot.cc
@@ -2450,10 +2450,16 @@
class LinkedHashMapMessageSerializationCluster
: public MessageSerializationCluster {
public:
- LinkedHashMapMessageSerializationCluster()
+ LinkedHashMapMessageSerializationCluster(Zone* zone,
+ bool is_canonical,
+ intptr_t cid)
: MessageSerializationCluster("LinkedHashMap",
- MessagePhase::kNonCanonicalInstances,
- kLinkedHashMapCid) {}
+ is_canonical
+ ? MessagePhase::kCanonicalInstances
+ : MessagePhase::kNonCanonicalInstances,
+ cid,
+ is_canonical),
+ objects_(zone, 0) {}
~LinkedHashMapMessageSerializationCluster() {}
void Trace(MessageSerializer* s, Object* object) {
@@ -2491,14 +2497,15 @@
class LinkedHashMapMessageDeserializationCluster
: public MessageDeserializationCluster {
public:
- explicit LinkedHashMapMessageDeserializationCluster(bool is_canonical)
- : MessageDeserializationCluster("LinkedHashMap", is_canonical) {}
+ LinkedHashMapMessageDeserializationCluster(bool is_canonical, intptr_t cid)
+ : MessageDeserializationCluster("LinkedHashMap", is_canonical),
+ cid_(cid) {}
~LinkedHashMapMessageDeserializationCluster() {}
void ReadNodes(MessageDeserializer* d) {
intptr_t count = d->ReadUnsigned();
for (intptr_t i = 0; i < count; i++) {
- d->AssignRef(LinkedHashMap::NewUninitialized());
+ d->AssignRef(LinkedHashMap::NewUninitialized(cid_));
}
}
@@ -2514,16 +2521,41 @@
}
}
- ObjectPtr PostLoad(MessageDeserializer* d) { return PostLoadLinkedHash(d); }
+ ObjectPtr PostLoad(MessageDeserializer* d) {
+ if (!is_canonical()) {
+ ASSERT(cid_ == kLinkedHashMapCid);
+ return PostLoadLinkedHash(d);
+ }
+
+ ASSERT(cid_ == kImmutableLinkedHashMapCid);
+ SafepointMutexLocker ml(
+ d->isolate_group()->constant_canonicalization_mutex());
+ LinkedHashMap& instance = LinkedHashMap::Handle(d->zone());
+ for (intptr_t i = start_index_; i < stop_index_; i++) {
+ instance ^= d->Ref(i);
+ instance ^= instance.CanonicalizeLocked(d->thread());
+ d->UpdateRef(i, instance);
+ }
+ return nullptr;
+ }
+
+ private:
+ const intptr_t cid_;
};
class LinkedHashSetMessageSerializationCluster
: public MessageSerializationCluster {
public:
- LinkedHashSetMessageSerializationCluster()
+ LinkedHashSetMessageSerializationCluster(Zone* zone,
+ bool is_canonical,
+ intptr_t cid)
: MessageSerializationCluster("LinkedHashSet",
- MessagePhase::kNonCanonicalInstances,
- kLinkedHashSetCid) {}
+ is_canonical
+ ? MessagePhase::kCanonicalInstances
+ : MessagePhase::kNonCanonicalInstances,
+ cid,
+ is_canonical),
+ objects_(zone, 0) {}
~LinkedHashSetMessageSerializationCluster() {}
void Trace(MessageSerializer* s, Object* object) {
@@ -2561,14 +2593,15 @@
class LinkedHashSetMessageDeserializationCluster
: public MessageDeserializationCluster {
public:
- explicit LinkedHashSetMessageDeserializationCluster(bool is_canonical)
- : MessageDeserializationCluster("LinkedHashSet", is_canonical) {}
+ LinkedHashSetMessageDeserializationCluster(bool is_canonical, intptr_t cid)
+ : MessageDeserializationCluster("LinkedHashSet", is_canonical),
+ cid_(cid) {}
~LinkedHashSetMessageDeserializationCluster() {}
void ReadNodes(MessageDeserializer* d) {
intptr_t count = d->ReadUnsigned();
for (intptr_t i = 0; i < count; i++) {
- d->AssignRef(LinkedHashSet::NewUninitialized());
+ d->AssignRef(LinkedHashSet::NewUninitialized(cid_));
}
}
@@ -2584,7 +2617,26 @@
}
}
- ObjectPtr PostLoad(MessageDeserializer* d) { return PostLoadLinkedHash(d); }
+ ObjectPtr PostLoad(MessageDeserializer* d) {
+ if (!is_canonical()) {
+ ASSERT(cid_ == kLinkedHashSetCid);
+ return PostLoadLinkedHash(d);
+ }
+
+ ASSERT(cid_ == kImmutableLinkedHashSetCid);
+ SafepointMutexLocker ml(
+ d->isolate_group()->constant_canonicalization_mutex());
+ LinkedHashSet& instance = LinkedHashSet::Handle(d->zone());
+ for (intptr_t i = start_index_; i < stop_index_; i++) {
+ instance ^= d->Ref(i);
+ instance ^= instance.CanonicalizeLocked(d->thread());
+ d->UpdateRef(i, instance);
+ }
+ return nullptr;
+ }
+
+ private:
+ const intptr_t cid_;
};
class ArrayMessageSerializationCluster : public MessageSerializationCluster {
@@ -3336,9 +3388,13 @@
ephemeron_cluster_ = new (Z) WeakPropertyMessageSerializationCluster();
return ephemeron_cluster_;
case kLinkedHashMapCid:
- return new (Z) LinkedHashMapMessageSerializationCluster();
+ case kImmutableLinkedHashMapCid:
+ return new (Z)
+ LinkedHashMapMessageSerializationCluster(Z, is_canonical, cid);
case kLinkedHashSetCid:
- return new (Z) LinkedHashSetMessageSerializationCluster();
+ case kImmutableLinkedHashSetCid:
+ return new (Z)
+ LinkedHashSetMessageSerializationCluster(Z, is_canonical, cid);
case kArrayCid:
case kImmutableArrayCid:
return new (Z) ArrayMessageSerializationCluster(Z, is_canonical, cid);
@@ -3431,9 +3487,13 @@
ASSERT(!is_canonical);
return new (Z) WeakPropertyMessageDeserializationCluster();
case kLinkedHashMapCid:
- return new (Z) LinkedHashMapMessageDeserializationCluster(is_canonical);
+ case kImmutableLinkedHashMapCid:
+ return new (Z)
+ LinkedHashMapMessageDeserializationCluster(is_canonical, cid);
case kLinkedHashSetCid:
- return new (Z) LinkedHashSetMessageDeserializationCluster(is_canonical);
+ case kImmutableLinkedHashSetCid:
+ return new (Z)
+ LinkedHashSetMessageDeserializationCluster(is_canonical, cid);
case kArrayCid:
case kImmutableArrayCid:
return new (Z) ArrayMessageDeserializationCluster(is_canonical, cid);
diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc
index 8344d4b..6ea4ade 100644
--- a/runtime/vm/object.cc
+++ b/runtime/vm/object.cc
@@ -1658,10 +1658,11 @@
object_store->set_array_class(cls);
// VM classes that are parameterized (Array, ImmutableArray,
- // GrowableObjectArray, and LinkedHashMap) are also pre-finalized, so
- // CalculateFieldOffsets() is not called, so we need to set the offset of
- // their type_arguments_ field, which is explicitly declared in their
- // respective Raw* classes.
+ // GrowableObjectArray, LinkedHashMap, ImmutableLinkedHashMap,
+ // LinkedHashSet, ImmutableLinkedHashSet) are also pre-finalized, so
+ // CalculateFieldOffsets() is not called, so we need to set the offset
+ // of their type_arguments_ field, which is explicitly
+ // declared in their respective Raw* classes.
cls.set_type_arguments_field_offset(Array::type_arguments_offset(),
RTN::Array::type_arguments_offset());
cls.set_num_type_arguments_unsafe(1);
@@ -1965,6 +1966,17 @@
RegisterPrivateClass(cls, Symbols::_LinkedHashMap(), lib);
pending_classes.Add(cls);
+ cls = Class::New<LinkedHashMap, RTN::LinkedHashMap>(
+ kImmutableLinkedHashMapCid, isolate_group);
+ object_store->set_immutable_linked_hash_map_class(cls);
+ cls.set_type_arguments_field_offset(
+ LinkedHashMap::type_arguments_offset(),
+ RTN::LinkedHashMap::type_arguments_offset());
+ cls.set_num_type_arguments_unsafe(2);
+ cls.set_is_prefinalized();
+ RegisterPrivateClass(cls, Symbols::_ImmutableLinkedHashMap(), lib);
+ pending_classes.Add(cls);
+
cls = Class::New<LinkedHashSet, RTN::LinkedHashSet>(isolate_group);
object_store->set_linked_hash_set_class(cls);
cls.set_type_arguments_field_offset(
@@ -1974,6 +1986,17 @@
RegisterPrivateClass(cls, Symbols::_LinkedHashSet(), lib);
pending_classes.Add(cls);
+ cls = Class::New<LinkedHashSet, RTN::LinkedHashSet>(
+ kImmutableLinkedHashSetCid, isolate_group);
+ object_store->set_immutable_linked_hash_set_class(cls);
+ cls.set_type_arguments_field_offset(
+ LinkedHashSet::type_arguments_offset(),
+ RTN::LinkedHashSet::type_arguments_offset());
+ cls.set_num_type_arguments_unsafe(1);
+ cls.set_is_prefinalized();
+ RegisterPrivateClass(cls, Symbols::_ImmutableLinkedHashSet(), lib);
+ pending_classes.Add(cls);
+
// 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());
@@ -2438,9 +2461,17 @@
cls = Class::New<LinkedHashMap, RTN::LinkedHashMap>(isolate_group);
object_store->set_linked_hash_map_class(cls);
+ cls = Class::New<LinkedHashMap, RTN::LinkedHashMap>(
+ kImmutableLinkedHashMapCid, isolate_group);
+ object_store->set_immutable_linked_hash_map_class(cls);
+
cls = Class::New<LinkedHashSet, RTN::LinkedHashSet>(isolate_group);
object_store->set_linked_hash_set_class(cls);
+ cls = Class::New<LinkedHashSet, RTN::LinkedHashSet>(
+ kImmutableLinkedHashSetCid, isolate_group);
+ object_store->set_immutable_linked_hash_set_class(cls);
+
cls = Class::New<Float32x4, RTN::Float32x4>(isolate_group);
object_store->set_float32x4_class(cls);
@@ -2806,6 +2837,11 @@
size - kHeaderSizeInBytes);
}
+ if (IsTypedDataClassId(raw_clone->GetClassId())) {
+ auto raw_typed_data = TypedData::RawCast(raw_clone);
+ raw_typed_data.untag()->RecomputeDataField();
+ }
+
// Add clone to store buffer, if needed.
if (!raw_clone->IsOldObject()) {
// No need to remember an object in new space.
@@ -4631,6 +4667,9 @@
CLASS_LIST_TYPED_DATA(ADD_SET_FIELD)
#undef ADD_SET_FIELD
#undef CLASS_LIST_WITH_NULL
+ // Used in const hashing to determine whether we're dealing with a
+ // user-defined const. See lib/_internal/vm/lib/compact_hash.dart.
+ {"numPredefinedCids", kNumPredefinedCids},
};
const AbstractType& field_type = Type::Handle(zone, Type::IntType());
@@ -6056,6 +6095,7 @@
InstancePtr Class::InsertCanonicalConstant(Zone* zone,
const Instance& constant) const {
+ ASSERT(constant.IsCanonical());
ASSERT(this->ptr() == constant.clazz());
Instance& canonical_value = Instance::Handle(zone);
if (this->constants() == Array::null()) {
@@ -24566,7 +24606,8 @@
}
};
-LinkedHashMapPtr LinkedHashMap::NewDefault(Heap::Space space) {
+LinkedHashMapPtr LinkedHashMap::NewDefault(intptr_t class_id,
+ Heap::Space space) {
const Array& data = Array::Handle(Array::New(kInitialIndexSize, space));
const TypedData& index = TypedData::Handle(
TypedData::New(kTypedDataUint32ArrayCid, kInitialIndexSize, space));
@@ -24574,35 +24615,40 @@
static const intptr_t kAvailableBits = (kSmiBits >= 32) ? 32 : kSmiBits;
static const intptr_t kInitialHashMask =
(1 << (kAvailableBits - kInitialIndexBits)) - 1;
- return LinkedHashMap::New(data, index, kInitialHashMask, 0, 0, space);
+ return LinkedHashMap::New(class_id, data, index, kInitialHashMask, 0, 0,
+ space);
}
-LinkedHashMapPtr LinkedHashMap::New(const Array& data,
+LinkedHashMapPtr LinkedHashMap::New(intptr_t class_id,
+ const Array& data,
const TypedData& index,
intptr_t hash_mask,
intptr_t used_data,
intptr_t deleted_keys,
Heap::Space space) {
+ ASSERT(class_id == kLinkedHashMapCid ||
+ class_id == kImmutableLinkedHashMapCid);
ASSERT(IsolateGroup::Current()->object_store()->linked_hash_map_class() !=
Class::null());
LinkedHashMap& result =
- LinkedHashMap::Handle(LinkedHashMap::NewUninitialized(space));
- result.SetData(data);
- result.SetIndex(index);
- result.SetHashMask(hash_mask);
- result.SetUsedData(used_data);
- result.SetDeletedKeys(deleted_keys);
+ LinkedHashMap::Handle(LinkedHashMap::NewUninitialized(class_id, space));
+ result.set_data(data);
+ result.set_index(index);
+ result.set_hash_mask(hash_mask);
+ result.set_used_data(used_data);
+ result.set_deleted_keys(deleted_keys);
return result.ptr();
}
-LinkedHashMapPtr LinkedHashMap::NewUninitialized(Heap::Space space) {
+LinkedHashMapPtr LinkedHashMap::NewUninitialized(intptr_t class_id,
+ Heap::Space space) {
ASSERT(IsolateGroup::Current()->object_store()->linked_hash_map_class() !=
Class::null());
LinkedHashMap& result = LinkedHashMap::Handle();
{
ObjectPtr raw =
- Object::Allocate(LinkedHashMap::kClassId, LinkedHashMap::InstanceSize(),
- space, LinkedHashMap::ContainsCompressedPointers());
+ Object::Allocate(class_id, LinkedHashMap::InstanceSize(), space,
+ LinkedHashMap::ContainsCompressedPointers());
NoSafepointScope no_safepoint;
result ^= raw;
}
@@ -24611,28 +24657,155 @@
const char* LinkedHashMap::ToCString() const {
Zone* zone = Thread::Current()->zone();
- return zone->PrintToString("_LinkedHashMap len:%" Pd, Length());
+ return zone->PrintToString(
+ "_%sLinkedHashMap len:%" Pd,
+ GetClassId() == kImmutableLinkedHashMapCid ? "Immutable" : "", Length());
}
-LinkedHashSetPtr LinkedHashSet::New(const Array& data,
+void LinkedHashBase::ComputeAndSetHashMask() const {
+ ASSERT(IsImmutable());
+ ASSERT_EQUAL(Smi::Value(deleted_keys()), 0);
+ Thread* const thread = Thread::Current();
+ Zone* const zone = thread->zone();
+
+ const auto& data_array = Array::Handle(zone, data());
+ const intptr_t data_length = data_array.Length();
+ const intptr_t index_size_mult = IsLinkedHashMap() ? 1 : 2;
+ const intptr_t index_size = Utils::Maximum(LinkedHashBase::kInitialIndexSize,
+ data_length * index_size_mult);
+ ASSERT(Utils::IsPowerOfTwo(index_size));
+
+ const intptr_t hash_mask = IndexSizeToHashMask(index_size);
+ set_hash_mask(hash_mask);
+}
+
+bool LinkedHashBase::CanonicalizeEquals(const Instance& other) const {
+ ASSERT(IsImmutable());
+
+ if (this->ptr() == other.ptr()) {
+ // Both handles point to the same raw instance.
+ return true;
+ }
+ if (other.IsNull()) {
+ return false;
+ }
+ if (GetClassId() != other.GetClassId()) {
+ return false;
+ }
+
+ Zone* zone = Thread::Current()->zone();
+
+ const LinkedHashBase& other_map = LinkedHashBase::Cast(other);
+
+ if (!Smi::Handle(zone, used_data())
+ .Equals(Smi::Handle(zone, other_map.used_data()))) {
+ return false;
+ }
+
+ // Immutable maps and sets do not have deleted keys.
+ ASSERT_EQUAL(RawSmiValue(deleted_keys()), 0);
+
+ if (!Array::Handle(zone, data())
+ .CanonicalizeEquals(Array::Handle(zone, other_map.data()))) {
+ return false;
+ }
+
+ if (GetTypeArguments() == other.GetTypeArguments()) {
+ return true;
+ }
+ const TypeArguments& type_args =
+ TypeArguments::Handle(zone, GetTypeArguments());
+ const TypeArguments& other_type_args =
+ TypeArguments::Handle(zone, other.GetTypeArguments());
+ return type_args.Equals(other_type_args);
+}
+
+uint32_t LinkedHashBase::CanonicalizeHash() const {
+ ASSERT(IsImmutable());
+
+ Thread* thread = Thread::Current();
+ uint32_t hash = thread->heap()->GetCanonicalHash(ptr());
+ if (hash != 0) {
+ return hash;
+ }
+
+ // Immutable maps and sets do not have deleted keys.
+ ASSERT_EQUAL(RawSmiValue(deleted_keys()), 0);
+
+ Zone* zone = thread->zone();
+ auto& member = Instance::Handle(zone, GetTypeArguments());
+ hash = member.CanonicalizeHash();
+ member = data();
+ hash = CombineHashes(hash, member.CanonicalizeHash());
+ member = used_data();
+ hash = CombineHashes(hash, member.CanonicalizeHash());
+ hash = FinalizeHash(hash, kHashBits);
+ thread->heap()->SetCanonicalHash(ptr(), hash);
+ return hash;
+}
+
+void LinkedHashBase::CanonicalizeFieldsLocked(Thread* thread) const {
+ ASSERT(IsImmutable());
+
+ Zone* zone = thread->zone();
+
+ TypeArguments& type_args = TypeArguments::Handle(zone, GetTypeArguments());
+ if (!type_args.IsNull()) {
+ type_args = type_args.Canonicalize(thread, nullptr);
+ SetTypeArguments(type_args);
+ }
+
+ auto& data_array = Array::Handle(zone, data());
+ data_array.MakeImmutable();
+ data_array ^= data_array.CanonicalizeLocked(thread);
+ set_data(data_array);
+
+ // The index should not be set yet. It is populated lazily on first read.
+ const auto& index_td = TypedData::Handle(zone, index());
+ ASSERT(index_td.IsNull());
+}
+
+ImmutableLinkedHashMapPtr ImmutableLinkedHashMap::NewDefault(
+ Heap::Space space) {
+ ASSERT(IsolateGroup::Current()
+ ->object_store()
+ ->immutable_linked_hash_map_class() != Class::null());
+ return static_cast<ImmutableLinkedHashMapPtr>(
+ LinkedHashMap::NewDefault(kClassId, space));
+}
+
+ImmutableLinkedHashMapPtr ImmutableLinkedHashMap::NewUninitialized(
+ Heap::Space space) {
+ ASSERT(IsolateGroup::Current()
+ ->object_store()
+ ->immutable_linked_hash_map_class() != Class::null());
+ return static_cast<ImmutableLinkedHashMapPtr>(
+ LinkedHashMap::NewUninitialized(kClassId, space));
+}
+
+LinkedHashSetPtr LinkedHashSet::New(intptr_t class_id,
+ const Array& data,
const TypedData& index,
intptr_t hash_mask,
intptr_t used_data,
intptr_t deleted_keys,
Heap::Space space) {
+ ASSERT(class_id == kLinkedHashSetCid ||
+ class_id == kImmutableLinkedHashSetCid);
ASSERT(IsolateGroup::Current()->object_store()->linked_hash_map_class() !=
Class::null());
LinkedHashSet& result =
- LinkedHashSet::Handle(LinkedHashSet::NewUninitialized(space));
- result.SetData(data);
- result.SetIndex(index);
- result.SetHashMask(hash_mask);
- result.SetUsedData(used_data);
- result.SetDeletedKeys(deleted_keys);
+ LinkedHashSet::Handle(LinkedHashSet::NewUninitialized(class_id, space));
+ result.set_data(data);
+ result.set_index(index);
+ result.set_hash_mask(hash_mask);
+ result.set_used_data(used_data);
+ result.set_deleted_keys(deleted_keys);
return result.ptr();
}
-LinkedHashSetPtr LinkedHashSet::NewDefault(Heap::Space space) {
+LinkedHashSetPtr LinkedHashSet::NewDefault(intptr_t class_id,
+ Heap::Space space) {
const Array& data = Array::Handle(Array::New(kInitialIndexSize, space));
const TypedData& index = TypedData::Handle(
TypedData::New(kTypedDataUint32ArrayCid, kInitialIndexSize, space));
@@ -24640,26 +24813,48 @@
static const intptr_t kAvailableBits = (kSmiBits >= 32) ? 32 : kSmiBits;
static const intptr_t kInitialHashMask =
(1 << (kAvailableBits - kInitialIndexBits)) - 1;
- return LinkedHashSet::New(data, index, kInitialHashMask, 0, 0, space);
+ return LinkedHashSet::New(class_id, data, index, kInitialHashMask, 0, 0,
+ space);
}
-LinkedHashSetPtr LinkedHashSet::NewUninitialized(Heap::Space space) {
+LinkedHashSetPtr LinkedHashSet::NewUninitialized(intptr_t class_id,
+ Heap::Space space) {
ASSERT(IsolateGroup::Current()->object_store()->linked_hash_map_class() !=
Class::null());
LinkedHashSet& result = LinkedHashSet::Handle();
{
ObjectPtr raw =
- Object::Allocate(kLinkedHashSetCid, LinkedHashSet::InstanceSize(),
- space, LinkedHashSet::ContainsCompressedPointers());
+ Object::Allocate(class_id, LinkedHashSet::InstanceSize(), space,
+ LinkedHashSet::ContainsCompressedPointers());
NoSafepointScope no_safepoint;
result ^= raw;
}
return result.ptr();
}
+ImmutableLinkedHashSetPtr ImmutableLinkedHashSet::NewDefault(
+ Heap::Space space) {
+ ASSERT(IsolateGroup::Current()
+ ->object_store()
+ ->immutable_linked_hash_set_class() != Class::null());
+ return static_cast<ImmutableLinkedHashSetPtr>(
+ LinkedHashSet::NewDefault(kClassId, space));
+}
+
+ImmutableLinkedHashSetPtr ImmutableLinkedHashSet::NewUninitialized(
+ Heap::Space space) {
+ ASSERT(IsolateGroup::Current()
+ ->object_store()
+ ->immutable_linked_hash_map_class() != Class::null());
+ return static_cast<ImmutableLinkedHashSetPtr>(
+ LinkedHashSet::NewUninitialized(kClassId, space));
+}
+
const char* LinkedHashSet::ToCString() const {
Zone* zone = Thread::Current()->zone();
- return zone->PrintToString("LinkedHashSet len:%" Pd, Length());
+ return zone->PrintToString(
+ "_%sLinkedHashSet len:%" Pd,
+ GetClassId() == kImmutableLinkedHashSetCid ? "Immutable" : "", Length());
}
const char* FutureOr::ToCString() const {
diff --git a/runtime/vm/object.h b/runtime/vm/object.h
index 3b9d8ec..a787575 100644
--- a/runtime/vm/object.h
+++ b/runtime/vm/object.h
@@ -10970,6 +10970,16 @@
class LinkedHashBase : public Instance {
public:
+ // Keep consistent with _indexSizeToHashMask in compact_hash.dart.
+ static intptr_t IndexSizeToHashMask(intptr_t index_size) {
+ ASSERT(index_size >= kInitialIndexSize);
+ intptr_t index_bits = Utils::BitLength(index_size) - 2;
+#if defined(HAS_SMI_63_BITS)
+ return (1 << (32 - index_bits)) - 1;
+#else
+ return (1 << (Object::kHashBits - index_bits)) - 1;
+#endif
+ }
static intptr_t InstanceSize() {
return RoundedAllocationSize(sizeof(UntaggedLinkedHashBase));
}
@@ -10998,15 +11008,101 @@
return OFFSET_OF(UntaggedLinkedHashBase, deleted_keys_);
}
+ static const LinkedHashBase& Cast(const Object& obj) {
+ ASSERT(obj.IsLinkedHashMap() || obj.IsLinkedHashSet());
+ return static_cast<const LinkedHashBase&>(obj);
+ }
+
+ bool IsImmutable() const {
+ return GetClassId() == kImmutableLinkedHashMapCid ||
+ GetClassId() == kImmutableLinkedHashSetCid;
+ }
+
+ virtual TypeArgumentsPtr GetTypeArguments() const {
+ return untag()->type_arguments();
+ }
+ virtual void SetTypeArguments(const TypeArguments& value) const {
+ const intptr_t num_type_args = IsLinkedHashMap() ? 2 : 1;
+ ASSERT(value.IsNull() ||
+ ((value.Length() >= num_type_args) &&
+ value.IsInstantiated() /*&& value.IsCanonical()*/));
+ // TODO(asiva): Values read from a message snapshot are not properly marked
+ // as canonical. See for example tests/isolate/message3_test.dart.
+ untag()->set_type_arguments(value.ptr());
+ }
+
+ TypedDataPtr index() const { return untag()->index(); }
+ void set_index(const TypedData& value) const {
+ ASSERT(!value.IsNull());
+ untag()->set_index(value.ptr());
+ }
+
+ ArrayPtr data() const { return untag()->data(); }
+ void set_data(const Array& value) const { untag()->set_data(value.ptr()); }
+
+ SmiPtr hash_mask() const { return untag()->hash_mask(); }
+ void set_hash_mask(intptr_t value) const {
+ untag()->set_hash_mask(Smi::New(value));
+ }
+
+ SmiPtr used_data() const { return untag()->used_data(); }
+ void set_used_data(intptr_t value) const {
+ untag()->set_used_data(Smi::New(value));
+ }
+
+ SmiPtr deleted_keys() const { return untag()->deleted_keys(); }
+ void set_deleted_keys(intptr_t value) const {
+ untag()->set_deleted_keys(Smi::New(value));
+ }
+
+ intptr_t Length() const {
+ // The map or set may be uninitialized.
+ if (untag()->used_data() == Object::null()) return 0;
+ if (untag()->deleted_keys() == Object::null()) return 0;
+
+ intptr_t used = Smi::Value(untag()->used_data());
+ if (IsLinkedHashMap()) {
+ used >>= 1;
+ }
+ const intptr_t deleted = Smi::Value(untag()->deleted_keys());
+ return used - deleted;
+ }
+
+ // We do not compute the indices in the VM, but we do precompute the hash
+ // mask to avoid a load acquire barrier on reading the combination of index
+ // and hash mask.
+ void ComputeAndSetHashMask() const;
+
+ virtual bool CanonicalizeEquals(const Instance& other) const;
+ virtual uint32_t CanonicalizeHash() const;
+ virtual void CanonicalizeFieldsLocked(Thread* thread) const;
+
protected:
// Keep this in sync with Dart implementation (lib/compact_hash.dart).
static const intptr_t kInitialIndexBits = 2;
static const intptr_t kInitialIndexSize = 1 << (kInitialIndexBits + 1);
+ private:
+ LinkedHashBasePtr ptr() const { return static_cast<LinkedHashBasePtr>(ptr_); }
+ UntaggedLinkedHashBase* untag() const {
+ ASSERT(ptr() != null());
+ return const_cast<UntaggedLinkedHashBase*>(ptr()->untag());
+ }
+
friend class Class;
+ friend class ImmutableLinkedHashBase;
friend class LinkedHashBaseDeserializationCluster;
};
+class ImmutableLinkedHashBase : public AllStatic {
+ public:
+ static constexpr bool ContainsCompressedPointers() {
+ return LinkedHashBase::ContainsCompressedPointers();
+ }
+
+ static intptr_t data_offset() { return LinkedHashBase::data_offset(); }
+};
+
// Corresponds to
// - "new Map()",
// - non-const map literals, and
@@ -11018,60 +11114,16 @@
}
// Allocates a map with some default capacity, just like "new Map()".
- static LinkedHashMapPtr NewDefault(Heap::Space space = Heap::kNew);
- static LinkedHashMapPtr New(const Array& data,
+ static LinkedHashMapPtr NewDefault(intptr_t class_id = kLinkedHashMapCid,
+ Heap::Space space = Heap::kNew);
+ static LinkedHashMapPtr New(intptr_t class_id,
+ const Array& data,
const TypedData& index,
intptr_t hash_mask,
intptr_t used_data,
intptr_t deleted_keys,
Heap::Space space = Heap::kNew);
- virtual TypeArgumentsPtr GetTypeArguments() const {
- return untag()->type_arguments();
- }
- virtual void SetTypeArguments(const TypeArguments& value) const {
- ASSERT(value.IsNull() ||
- ((value.Length() >= 2) &&
- value.IsInstantiated() /*&& value.IsCanonical()*/));
- // TODO(asiva): Values read from a message snapshot are not properly marked
- // as canonical. See for example tests/isolate/message3_test.dart.
- untag()->set_type_arguments(value.ptr());
- }
-
- TypedDataPtr index() const { return untag()->index(); }
- void SetIndex(const TypedData& value) const {
- ASSERT(!value.IsNull());
- untag()->set_index(value.ptr());
- }
-
- ArrayPtr data() const { return untag()->data(); }
- void SetData(const Array& value) const { untag()->set_data(value.ptr()); }
-
- SmiPtr hash_mask() const { return untag()->hash_mask(); }
- void SetHashMask(intptr_t value) const {
- untag()->set_hash_mask(Smi::New(value));
- }
-
- SmiPtr used_data() const { return untag()->used_data(); }
- void SetUsedData(intptr_t value) const {
- untag()->set_used_data(Smi::New(value));
- }
-
- SmiPtr deleted_keys() const { return untag()->deleted_keys(); }
- void SetDeletedKeys(intptr_t value) const {
- untag()->set_deleted_keys(Smi::New(value));
- }
-
- intptr_t Length() const {
- // The map may be uninitialized.
- if (untag()->used_data() == Object::null()) return 0;
- if (untag()->deleted_keys() == Object::null()) return 0;
-
- intptr_t used = Smi::Value(untag()->used_data());
- intptr_t deleted = Smi::Value(untag()->deleted_keys());
- return (used >> 1) - deleted;
- }
-
// This iterator differs somewhat from its Dart counterpart (_CompactIterator
// in runtime/lib/compact_hash.dart):
// - There are no checks for concurrent modifications.
@@ -11115,12 +11167,42 @@
// Allocate a map, but leave all fields set to null.
// Used during deserialization (since map might contain itself as key/value).
- static LinkedHashMapPtr NewUninitialized(Heap::Space space = Heap::kNew);
+ static LinkedHashMapPtr NewUninitialized(intptr_t class_id,
+ Heap::Space space = Heap::kNew);
friend class Class;
+ friend class ImmutableLinkedHashMap;
friend class LinkedHashMapDeserializationCluster;
};
+class ImmutableLinkedHashMap : public AllStatic {
+ public:
+ static constexpr bool ContainsCompressedPointers() {
+ return LinkedHashMap::ContainsCompressedPointers();
+ }
+
+ static ImmutableLinkedHashMapPtr NewDefault(Heap::Space space = Heap::kNew);
+
+ static ImmutableLinkedHashMapPtr NewUninitialized(
+ Heap::Space space = Heap::kNew);
+
+ static const ClassId kClassId = kImmutableLinkedHashMapCid;
+
+ static intptr_t InstanceSize() { return LinkedHashMap::InstanceSize(); }
+
+ private:
+ static intptr_t NextFieldOffset() {
+ // Indicates this class cannot be extended by dart code.
+ return -kWordSize;
+ }
+
+ static ImmutableLinkedHashMapPtr raw(const LinkedHashMap& map) {
+ return static_cast<ImmutableLinkedHashMapPtr>(map.ptr());
+ }
+
+ friend class Class;
+};
+
class LinkedHashSet : public LinkedHashBase {
public:
static intptr_t InstanceSize() {
@@ -11128,60 +11210,16 @@
}
// Allocates a set with some default capacity, just like "new Set()".
- static LinkedHashSetPtr NewDefault(Heap::Space space = Heap::kNew);
- static LinkedHashSetPtr New(const Array& data,
+ static LinkedHashSetPtr NewDefault(intptr_t class_id = kLinkedHashSetCid,
+ Heap::Space space = Heap::kNew);
+ static LinkedHashSetPtr New(intptr_t class_id,
+ const Array& data,
const TypedData& index,
intptr_t hash_mask,
intptr_t used_data,
intptr_t deleted_keys,
Heap::Space space = Heap::kNew);
- virtual TypeArgumentsPtr GetTypeArguments() const {
- return untag()->type_arguments();
- }
- virtual void SetTypeArguments(const TypeArguments& value) const {
- ASSERT(value.IsNull() ||
- ((value.Length() >= 1) &&
- value.IsInstantiated() /*&& value.IsCanonical()*/));
- // TODO(asiva): Values read from a message snapshot are not properly marked
- // as canonical. See for example tests/isolate/message3_test.dart.
- untag()->set_type_arguments(value.ptr());
- }
-
- TypedDataPtr index() const { return untag()->index(); }
- void SetIndex(const TypedData& value) const {
- ASSERT(!value.IsNull());
- untag()->set_index(value.ptr());
- }
-
- ArrayPtr data() const { return untag()->data(); }
- void SetData(const Array& value) const { untag()->set_data(value.ptr()); }
-
- SmiPtr hash_mask() const { return untag()->hash_mask(); }
- void SetHashMask(intptr_t value) const {
- untag()->set_hash_mask(Smi::New(value));
- }
-
- SmiPtr used_data() const { return untag()->used_data(); }
- void SetUsedData(intptr_t value) const {
- untag()->set_used_data(Smi::New(value));
- }
-
- SmiPtr deleted_keys() const { return untag()->deleted_keys(); }
- void SetDeletedKeys(intptr_t value) const {
- untag()->set_deleted_keys(Smi::New(value));
- }
-
- intptr_t Length() const {
- // The map may be uninitialized.
- if (untag()->used_data() == Object::null()) return 0;
- if (untag()->deleted_keys() == Object::null()) return 0;
-
- intptr_t used = Smi::Value(untag()->used_data());
- intptr_t deleted = Smi::Value(untag()->deleted_keys());
- return used - deleted;
- }
-
// This iterator differs somewhat from its Dart counterpart (_CompactIterator
// in runtime/lib/compact_hash.dart):
// - There are no checks for concurrent modifications.
@@ -11223,7 +11261,38 @@
// Allocate a set, but leave all fields set to null.
// Used during deserialization (since set might contain itself as key/value).
- static LinkedHashSetPtr NewUninitialized(Heap::Space space = Heap::kNew);
+ static LinkedHashSetPtr NewUninitialized(intptr_t class_id,
+ Heap::Space space = Heap::kNew);
+
+ friend class Class;
+ friend class ImmutableLinkedHashSet;
+ friend class LinkedHashSetDeserializationCluster;
+};
+
+class ImmutableLinkedHashSet : public AllStatic {
+ public:
+ static constexpr bool ContainsCompressedPointers() {
+ return LinkedHashSet::ContainsCompressedPointers();
+ }
+
+ static ImmutableLinkedHashSetPtr NewDefault(Heap::Space space = Heap::kNew);
+
+ static ImmutableLinkedHashSetPtr NewUninitialized(
+ Heap::Space space = Heap::kNew);
+
+ static const ClassId kClassId = kImmutableLinkedHashSetCid;
+
+ static intptr_t InstanceSize() { return LinkedHashSet::InstanceSize(); }
+
+ private:
+ static intptr_t NextFieldOffset() {
+ // Indicates this class cannot be extended by dart code.
+ return -kWordSize;
+ }
+
+ static ImmutableLinkedHashSetPtr raw(const LinkedHashSet& map) {
+ return static_cast<ImmutableLinkedHashSetPtr>(map.ptr());
+ }
friend class Class;
};
diff --git a/runtime/vm/object_graph.cc b/runtime/vm/object_graph.cc
index 749c0f3..dfa116b 100644
--- a/runtime/vm/object_graph.cc
+++ b/runtime/vm/object_graph.cc
@@ -953,11 +953,11 @@
writer_->WriteUnsigned(kLengthData);
writer_->WriteUnsigned(Smi::Value(
static_cast<GrowableObjectArrayPtr>(obj)->untag()->length()));
- } else if (cid == kLinkedHashMapCid) {
+ } else if (cid == kLinkedHashMapCid || cid == kImmutableLinkedHashMapCid) {
writer_->WriteUnsigned(kLengthData);
writer_->WriteUnsigned(
Smi::Value(static_cast<LinkedHashMapPtr>(obj)->untag()->used_data()));
- } else if (cid == kLinkedHashSetCid) {
+ } else if (cid == kLinkedHashSetCid || cid == kImmutableLinkedHashSetCid) {
writer_->WriteUnsigned(kLengthData);
writer_->WriteUnsigned(
Smi::Value(static_cast<LinkedHashSetPtr>(obj)->untag()->used_data()));
@@ -1428,6 +1428,8 @@
case kExternalTwoByteStringCid:
case kGrowableObjectArrayCid:
case kImmutableArrayCid:
+ case kImmutableLinkedHashMapCid:
+ case kImmutableLinkedHashSetCid:
case kInstructionsCid:
case kInstructionsSectionCid:
case kInstructionsTableCid:
@@ -1454,7 +1456,7 @@
}
// Generates a random value which can serve as an identity hash.
-// It must be a non-zero smi value (see also [Object._getObjectHash]).
+// It must be a non-zero smi value (see also [Object._objectHashCode]).
static uint32_t GenerateHash(Random* random) {
uint32_t hash;
do {
diff --git a/runtime/vm/object_store.h b/runtime/vm/object_store.h
index a944d89..85a4265 100644
--- a/runtime/vm/object_store.h
+++ b/runtime/vm/object_store.h
@@ -136,7 +136,9 @@
RW(Class, immutable_array_class) \
RW(Class, growable_object_array_class) \
RW(Class, linked_hash_map_class) \
+ RW(Class, immutable_linked_hash_map_class) \
RW(Class, linked_hash_set_class) \
+ RW(Class, immutable_linked_hash_set_class) \
RW(Class, float32x4_class) \
RW(Class, int32x4_class) \
RW(Class, float64x2_class) \
diff --git a/runtime/vm/object_test.cc b/runtime/vm/object_test.cc
index fbb1527..cf90473 100644
--- a/runtime/vm/object_test.cc
+++ b/runtime/vm/object_test.cc
@@ -5029,64 +5029,6 @@
/*check_identity=*/false));
}
-// Because we want to reuse CanonicalizeHash for hashCode, we should not have
-// collisions.
-TEST_CASE(CanonicalizeHash_Const_Instances) {
- const char* kScript =
- "class A {\n"
- " final int n;\n"
- " \n"
- " const A(this.n);\n"
- "}\n"
- "\n"
- "class B {\n"
- " final int n;\n"
- " \n"
- " const B(this.n);\n"
- "}\n"
- "\n"
- "valueA() {\n"
- " return const A(5);\n"
- "}\n"
- "\n"
- "valueB() {\n"
- " return const B(5);\n"
- "}\n";
-
- Dart_Handle lib = TestCase::LoadTestScript(kScript, nullptr);
- EXPECT_VALID(lib);
-
- Dart_Handle value_a_result =
- Dart_Invoke(lib, NewString("valueA"), 0, nullptr);
- EXPECT_VALID(value_a_result);
- Dart_Handle value_b_result =
- Dart_Invoke(lib, NewString("valueB"), 0, nullptr);
- EXPECT_VALID(value_b_result);
-
- TransitionNativeToVM transition(Thread::Current());
-
- const auto& value_a_dart = Instance::CheckedHandle(
- Thread::Current()->zone(), Api::UnwrapHandle(value_a_result));
- const auto& value_b_dart = Instance::CheckedHandle(
- Thread::Current()->zone(), Api::UnwrapHandle(value_b_result));
-
- const uint32_t canonicalize_hash_a = value_a_dart.CanonicalizeHash();
- const uint32_t canonicalize_hash_b = value_b_dart.CanonicalizeHash();
-
- bool success = canonicalize_hash_a != canonicalize_hash_b;
-
- if (!success) {
- LogBlock lb;
- THR_Print("Hash collision between %s and %s\n", value_a_dart.ToCString(),
- value_b_dart.ToCString());
- THR_Print("VM CanonicalizeHash a %" Px32 " %" Pd32 "\n",
- canonicalize_hash_a, canonicalize_hash_a);
- THR_Print("VM CanonicalizeHash b %" Px32 " %" Pd32 "\n",
- canonicalize_hash_b, canonicalize_hash_b);
- }
- EXPECT(success);
-}
-
TEST_CASE(LinkedHashMap_iteration) {
const char* kScript =
"makeMap() {\n"
@@ -5126,14 +5068,461 @@
EXPECT(!iterator.MoveNext());
}
+template <class LinkedHashBase>
+static bool LinkedHashBaseEqual(const LinkedHashBase& map1,
+ const LinkedHashBase& map2,
+ bool print_diff,
+ bool check_data = true) {
+ if (check_data) {
+ // Check data, only for non-nested.
+ const auto& data1 = Array::Handle(map1.data());
+ const auto& data2 = Array::Handle(map2.data());
+ const bool data_length_equal = data1.Length() == data2.Length();
+ bool data_equal = data_length_equal;
+ if (data_length_equal) {
+ auto& object1 = Instance::Handle();
+ auto& object2 = Instance::Handle();
+ for (intptr_t i = 0; i < data1.Length(); i++) {
+ object1 ^= data1.At(i);
+ object2 ^= data2.At(i);
+ data_equal &= object1.CanonicalizeEquals(object2);
+ }
+ }
+ if (!data_equal) {
+ if (print_diff) {
+ THR_Print("LinkedHashBaseEqual Data not equal.\n");
+ THR_Print("LinkedHashBaseEqual data1.length %" Pd " data1.length %" Pd
+ " \n",
+ data1.Length(), data2.Length());
+ auto& object1 = Instance::Handle();
+ for (intptr_t i = 0; i < data1.Length(); i++) {
+ object1 ^= data1.At(i);
+ THR_Print("LinkedHashBaseEqual data1[%" Pd "] %s\n", i,
+ object1.ToCString());
+ }
+ for (intptr_t i = 0; i < data2.Length(); i++) {
+ object1 ^= data2.At(i);
+ THR_Print("LinkedHashBaseEqual data2[%" Pd "] %s\n", i,
+ object1.ToCString());
+ }
+ }
+ return false;
+ }
+ }
+
+ // Check hashing.
+ intptr_t hash_mask1 = Smi::Value(map1.hash_mask());
+ EXPECT(!Integer::Handle(map2.hash_mask()).IsNull());
+ intptr_t hash_mask2 = Smi::Value(map2.hash_mask());
+ const bool hash_masks_equal = hash_mask1 == hash_mask2;
+ if (!hash_masks_equal) {
+ if (print_diff) {
+ THR_Print("LinkedHashBaseEqual Hash masks not equal.\n");
+ THR_Print("LinkedHashBaseEqual hash_mask1 %" Px " hash_mask2 %" Px " \n",
+ hash_mask1, hash_mask2);
+ }
+ }
+
+ // Check indices.
+ const auto& index1 = TypedData::Handle(map1.index());
+ const auto& index2 = TypedData::Handle(map2.index());
+ EXPECT(!index2.IsNull());
+ ASSERT(index1.ElementType() == kUint32ArrayElement);
+ ASSERT(index2.ElementType() == kUint32ArrayElement);
+ const intptr_t kElementSize = 4;
+ ASSERT(kElementSize == index1.ElementSizeInBytes());
+ const bool index_length_equal = index1.Length() == index2.Length();
+ bool index_equal = index_length_equal;
+ if (index_length_equal) {
+ for (intptr_t i = 0; i < index1.Length(); i++) {
+ const uint32_t index1_val = index1.GetUint32(i * kElementSize);
+ const uint32_t index2_val = index2.GetUint32(i * kElementSize);
+ index_equal &= index1_val == index2_val;
+ }
+ }
+ if (!index_equal && print_diff) {
+ THR_Print("LinkedHashBaseEqual Indices not equal.\n");
+ THR_Print("LinkedHashBaseEqual index1.length %" Pd " index2.length %" Pd
+ " \n",
+ index1.Length(), index2.Length());
+ for (intptr_t i = 0; i < index1.Length(); i++) {
+ const uint32_t index_val = index1.GetUint32(i * kElementSize);
+ THR_Print("LinkedHashBaseEqual index1[%" Pd "] %" Px32 "\n", i,
+ index_val);
+ }
+ for (intptr_t i = 0; i < index2.Length(); i++) {
+ const uint32_t index_val = index2.GetUint32(i * kElementSize);
+ THR_Print("LinkedHashBaseEqual index2[%" Pd "] %" Px32 "\n", i,
+ index_val);
+ }
+ }
+ return index_equal;
+}
+
+// Copies elements from data.
+static LinkedHashMapPtr ConstructImmutableMap(
+ const Array& input_data,
+ intptr_t used_data,
+ const TypeArguments& type_arguments) {
+ auto& map = LinkedHashMap::Handle(ImmutableLinkedHashMap::NewUninitialized());
+
+ const auto& data = Array::Handle(Array::New(input_data.Length()));
+ for (intptr_t i = 0; i < used_data; i++) {
+ data.SetAt(i, Object::Handle(input_data.At(i)));
+ }
+ map.set_data(data);
+ map.set_used_data(used_data);
+ map.SetTypeArguments(type_arguments);
+ map.set_deleted_keys(0);
+ map.ComputeAndSetHashMask();
+ map ^= map.Canonicalize(Thread::Current());
+
+ return map.ptr();
+}
+
+// Constructs an immutable hashmap from a mutable one in this test.
+TEST_CASE(ImmutableLinkedHashMap_vm) {
+ const char* kScript = R"(
+enum ExperimentalFlag {
+ alternativeInvalidationStrategy,
+ constFunctions,
+ constantUpdate2018,
+ constructorTearoffs,
+ controlFlowCollections,
+ extensionMethods,
+ extensionTypes,
+ genericMetadata,
+ nonNullable,
+ nonfunctionTypeAliases,
+ setLiterals,
+ spreadCollections,
+ testExperiment,
+ tripleShift,
+ valueClass,
+ variance,
+}
+
+final Map<ExperimentalFlag?, bool> expiredExperimentalFlagsNonConst = {
+ ExperimentalFlag.alternativeInvalidationStrategy: false,
+ ExperimentalFlag.constFunctions: false,
+ ExperimentalFlag.constantUpdate2018: true,
+ ExperimentalFlag.constructorTearoffs: false,
+ ExperimentalFlag.controlFlowCollections: true,
+ ExperimentalFlag.extensionMethods: false,
+ ExperimentalFlag.extensionTypes: false,
+ ExperimentalFlag.genericMetadata: false,
+ ExperimentalFlag.nonNullable: false,
+ ExperimentalFlag.nonfunctionTypeAliases: false,
+ ExperimentalFlag.setLiterals: true,
+ ExperimentalFlag.spreadCollections: true,
+ ExperimentalFlag.testExperiment: false,
+ ExperimentalFlag.tripleShift: false,
+ ExperimentalFlag.valueClass: false,
+ ExperimentalFlag.variance: false,
+};
+
+makeNonConstMap() {
+ return expiredExperimentalFlagsNonConst;
+}
+
+firstKey() {
+ return ExperimentalFlag.alternativeInvalidationStrategy;
+}
+
+firstKeyHashCode() {
+ return firstKey().hashCode;
+}
+
+firstKeyIdentityHashCode() {
+ return identityHashCode(firstKey());
+}
+
+bool lookupSpreadCollections(Map map) =>
+ map[ExperimentalFlag.spreadCollections];
+
+bool? lookupNull(Map map) => map[null];
+)";
+ Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL);
+ EXPECT_VALID(lib);
+ Dart_Handle non_const_result =
+ Dart_Invoke(lib, NewString("makeNonConstMap"), 0, NULL);
+ EXPECT_VALID(non_const_result);
+ Dart_Handle first_key_result =
+ Dart_Invoke(lib, NewString("firstKey"), 0, NULL);
+ EXPECT_VALID(first_key_result);
+ Dart_Handle first_key_hashcode_result =
+ Dart_Invoke(lib, NewString("firstKeyHashCode"), 0, NULL);
+ EXPECT_VALID(first_key_hashcode_result);
+ Dart_Handle first_key_identity_hashcode_result =
+ Dart_Invoke(lib, NewString("firstKeyIdentityHashCode"), 0, NULL);
+ EXPECT_VALID(first_key_identity_hashcode_result);
+
+ Dart_Handle const_argument;
+
+ {
+ TransitionNativeToVM transition(thread);
+ const auto& non_const_map = LinkedHashMap::Cast(
+ Object::Handle(Api::UnwrapHandle(non_const_result)));
+ const auto& non_const_type_args =
+ TypeArguments::Handle(non_const_map.GetTypeArguments());
+ const auto& non_const_data = Array::Handle(non_const_map.data());
+ const auto& const_map = LinkedHashMap::Handle(ConstructImmutableMap(
+ non_const_data, Smi::Value(non_const_map.used_data()),
+ non_const_type_args));
+ ASSERT(non_const_map.GetClassId() == kLinkedHashMapCid);
+ ASSERT(const_map.GetClassId() == kImmutableLinkedHashMapCid);
+ ASSERT(!non_const_map.IsCanonical());
+ ASSERT(const_map.IsCanonical());
+
+ const_argument = Api::NewHandle(thread, const_map.ptr());
+ }
+
+ Dart_Handle lookup_result = Dart_Invoke(
+ lib, NewString("lookupSpreadCollections"), 1, &const_argument);
+ EXPECT_VALID(lookup_result);
+ EXPECT_TRUE(lookup_result);
+
+ Dart_Handle lookup_null_result =
+ Dart_Invoke(lib, NewString("lookupNull"), 1, &const_argument);
+ EXPECT_VALID(lookup_null_result);
+ EXPECT_NULL(lookup_null_result);
+
+ {
+ TransitionNativeToVM transition(thread);
+ const auto& non_const_object =
+ Object::Handle(Api::UnwrapHandle(non_const_result));
+ const auto& non_const_map = LinkedHashMap::Cast(non_const_object);
+ const auto& const_object =
+ Object::Handle(Api::UnwrapHandle(const_argument));
+ const auto& const_map = LinkedHashMap::Cast(const_object);
+
+ EXPECT(non_const_map.GetClassId() != const_map.GetClassId());
+
+ // Check that the index is identical.
+ EXPECT(LinkedHashBaseEqual(non_const_map, const_map,
+ /*print_diff=*/true));
+ }
+}
+
+static bool IsLinkedHashBase(const Object& object) {
+ return object.IsLinkedHashMap() || object.IsLinkedHashSet();
+}
+
+// Checks that the non-constant and constant HashMap and HashSets are equal.
+//
+// Expects a script with a methods named `nonConstValue`, `constValue`, and
+// `init`.
+template <class LinkedHashBase, int kMutableCid, int kImmutableCid>
+static void HashBaseNonConstEqualsConst(const char* script,
+ bool check_data = true) {
+ Dart_Handle lib = TestCase::LoadTestScript(script, NULL);
+ EXPECT_VALID(lib);
+ Dart_Handle init_result = Dart_Invoke(lib, NewString("init"), 0, NULL);
+ EXPECT_VALID(init_result);
+ Dart_Handle non_const_result =
+ Dart_Invoke(lib, NewString("nonConstValue"), 0, NULL);
+ EXPECT_VALID(non_const_result);
+ Dart_Handle const_result = Dart_Invoke(lib, NewString("constValue"), 0, NULL);
+ EXPECT_VALID(const_result);
+
+ TransitionNativeToVM transition(Thread::Current());
+ const auto& non_const_object =
+ Object::Handle(Api::UnwrapHandle(non_const_result));
+ const auto& const_object = Object::Handle(Api::UnwrapHandle(const_result));
+ non_const_object.IsLinkedHashMap();
+ EXPECT(IsLinkedHashBase(non_const_object));
+ if (!IsLinkedHashBase(non_const_object)) return;
+ const auto& non_const_value = LinkedHashBase::Cast(non_const_object);
+ EXPECT(IsLinkedHashBase(const_object));
+ if (!IsLinkedHashBase(const_object)) return;
+ const auto& const_value = LinkedHashBase::Cast(const_object);
+ EXPECT_EQ(non_const_value.GetClassId(), kMutableCid);
+ EXPECT_EQ(const_value.GetClassId(), kImmutableCid);
+ EXPECT(!non_const_value.IsCanonical());
+ EXPECT(const_value.IsCanonical());
+ EXPECT(LinkedHashBaseEqual(non_const_value, const_value,
+ /*print_diff=*/true, check_data));
+}
+
+static void HashMapNonConstEqualsConst(const char* script,
+ bool check_data = true) {
+ HashBaseNonConstEqualsConst<LinkedHashMap, kLinkedHashMapCid,
+ kImmutableLinkedHashMapCid>(script, check_data);
+}
+
+static void HashSetNonConstEqualsConst(const char* script,
+ bool check_data = true) {
+ HashBaseNonConstEqualsConst<LinkedHashSet, kLinkedHashSetCid,
+ kImmutableLinkedHashSetCid>(script, check_data);
+}
+
+TEST_CASE(ImmutableLinkedHashMap_small) {
+ const char* kScript = R"(
+constValue() => const {1: 42, 'foo': 499, 2: 'bar'};
+
+nonConstValue() => {1: 42, 'foo': 499, 2: 'bar'};
+
+void init() {
+ constValue()[null];
+}
+)";
+ HashMapNonConstEqualsConst(kScript);
+}
+
+TEST_CASE(ImmutableLinkedHashMap_null) {
+ const char* kScript = R"(
+constValue() => const {1: 42, 'foo': 499, null: 'bar'};
+
+nonConstValue() => {1: 42, 'foo': 499, null: 'bar'};
+
+void init() {
+ constValue()[null];
+}
+)";
+ HashMapNonConstEqualsConst(kScript);
+}
+
+TEST_CASE(ImmutableLinkedHashMap_larger) {
+ const char* kScript = R"(
+enum ExperimentalFlag {
+ alternativeInvalidationStrategy,
+ constFunctions,
+ constantUpdate2018,
+ constructorTearoffs,
+ controlFlowCollections,
+ extensionMethods,
+ extensionTypes,
+ genericMetadata,
+ nonNullable,
+ nonfunctionTypeAliases,
+ setLiterals,
+ spreadCollections,
+ testExperiment,
+ tripleShift,
+ valueClass,
+ variance,
+}
+
+const Map<ExperimentalFlag, bool> expiredExperimentalFlags = {
+ ExperimentalFlag.alternativeInvalidationStrategy: false,
+ ExperimentalFlag.constFunctions: false,
+ ExperimentalFlag.constantUpdate2018: true,
+ ExperimentalFlag.constructorTearoffs: false,
+ ExperimentalFlag.controlFlowCollections: true,
+ ExperimentalFlag.extensionMethods: false,
+ ExperimentalFlag.extensionTypes: false,
+ ExperimentalFlag.genericMetadata: false,
+ ExperimentalFlag.nonNullable: false,
+ ExperimentalFlag.nonfunctionTypeAliases: false,
+ ExperimentalFlag.setLiterals: true,
+ ExperimentalFlag.spreadCollections: true,
+ ExperimentalFlag.testExperiment: false,
+ ExperimentalFlag.tripleShift: false,
+ ExperimentalFlag.valueClass: false,
+ ExperimentalFlag.variance: false,
+};
+
+final Map<ExperimentalFlag, bool> expiredExperimentalFlagsNonConst = {
+ ExperimentalFlag.alternativeInvalidationStrategy: false,
+ ExperimentalFlag.constFunctions: false,
+ ExperimentalFlag.constantUpdate2018: true,
+ ExperimentalFlag.constructorTearoffs: false,
+ ExperimentalFlag.controlFlowCollections: true,
+ ExperimentalFlag.extensionMethods: false,
+ ExperimentalFlag.extensionTypes: false,
+ ExperimentalFlag.genericMetadata: false,
+ ExperimentalFlag.nonNullable: false,
+ ExperimentalFlag.nonfunctionTypeAliases: false,
+ ExperimentalFlag.setLiterals: true,
+ ExperimentalFlag.spreadCollections: true,
+ ExperimentalFlag.testExperiment: false,
+ ExperimentalFlag.tripleShift: false,
+ ExperimentalFlag.valueClass: false,
+ ExperimentalFlag.variance: false,
+};
+
+constValue() => expiredExperimentalFlags;
+
+nonConstValue() => expiredExperimentalFlagsNonConst;
+
+void init() {
+ constValue()[null];
+}
+)";
+ HashMapNonConstEqualsConst(kScript);
+}
+
+TEST_CASE(ImmutableLinkedHashMap_nested) {
+ const char* kScript = R"(
+enum Abi {
+ wordSize64,
+ wordSize32Align32,
+ wordSize32Align64,
+}
+
+enum NativeType {
+ kNativeType,
+ kNativeInteger,
+ kNativeDouble,
+ kPointer,
+ kNativeFunction,
+ kInt8,
+ kInt16,
+ kInt32,
+ kInt64,
+ kUint8,
+ kUint16,
+ kUint32,
+ kUnit64,
+ kIntptr,
+ kFloat,
+ kDouble,
+ kVoid,
+ kOpaque,
+ kStruct,
+ kHandle,
+}
+
+const nonSizeAlignment = <Abi, Map<NativeType, int>>{
+ Abi.wordSize64: {},
+ Abi.wordSize32Align32: {
+ NativeType.kDouble: 4,
+ NativeType.kInt64: 4,
+ NativeType.kUnit64: 4
+ },
+ Abi.wordSize32Align64: {},
+};
+
+final nonSizeAlignmentNonConst = <Abi, Map<NativeType, int>>{
+ Abi.wordSize64: {},
+ Abi.wordSize32Align32: {
+ NativeType.kDouble: 4,
+ NativeType.kInt64: 4,
+ NativeType.kUnit64: 4
+ },
+ Abi.wordSize32Align64: {},
+};
+
+constValue() => nonSizeAlignment;
+
+nonConstValue() => nonSizeAlignmentNonConst;
+
+void init() {
+ constValue()[null];
+}
+)";
+ HashMapNonConstEqualsConst(kScript, false);
+}
+
TEST_CASE(LinkedHashSet_iteration) {
- const char* kScript =
- "makeSet() {\n"
- " var set = {'x', 'y', 'z', 'w'};\n"
- " set.remove('y');\n"
- " set.remove('w');\n"
- " return set;\n"
- "}";
+ const char* kScript = R"(
+makeSet() {
+ var set = {'x', 'y', 'z', 'w'};
+ set.remove('y');
+ set.remove('w');
+ return set;
+}
+)";
Dart_Handle h_lib = TestCase::LoadTestScript(kScript, NULL);
EXPECT_VALID(h_lib);
Dart_Handle h_result = Dart_Invoke(h_lib, NewString("makeSet"), 0, NULL);
@@ -5161,6 +5550,163 @@
EXPECT(!iterator.MoveNext());
}
+// Copies elements from data.
+static LinkedHashSetPtr ConstructImmutableSet(
+ const Array& input_data,
+ intptr_t used_data,
+ const TypeArguments& type_arguments) {
+ auto& set = LinkedHashSet::Handle(ImmutableLinkedHashSet::NewUninitialized());
+
+ const auto& data = Array::Handle(Array::New(input_data.Length()));
+ for (intptr_t i = 0; i < used_data; i++) {
+ data.SetAt(i, Object::Handle(input_data.At(i)));
+ }
+ set.set_data(data);
+ set.set_used_data(used_data);
+ set.SetTypeArguments(type_arguments);
+ set.set_deleted_keys(0);
+ set.ComputeAndSetHashMask();
+ set ^= set.Canonicalize(Thread::Current());
+
+ return set.ptr();
+}
+
+TEST_CASE(ImmutableLinkedHashSet_vm) {
+ const char* kScript = R"(
+makeNonConstSet() {
+ return {1, 2, 3, 5, 8, 13};
+}
+
+bool containsFive(Set set) => set.contains(5);
+)";
+ Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL);
+ EXPECT_VALID(lib);
+ Dart_Handle non_const_result =
+ Dart_Invoke(lib, NewString("makeNonConstSet"), 0, NULL);
+ EXPECT_VALID(non_const_result);
+
+ Dart_Handle const_argument;
+
+ {
+ TransitionNativeToVM transition(thread);
+ const auto& non_const_object =
+ Object::Handle(Api::UnwrapHandle(non_const_result));
+ const auto& non_const_set = LinkedHashSet::Cast(non_const_object);
+ ASSERT(non_const_set.GetClassId() == kLinkedHashSetCid);
+ ASSERT(!non_const_set.IsCanonical());
+
+ const auto& non_const_data = Array::Handle(non_const_set.data());
+ const auto& non_const_type_args =
+ TypeArguments::Handle(non_const_set.GetTypeArguments());
+ const auto& const_set = LinkedHashSet::Handle(ConstructImmutableSet(
+ non_const_data, Smi::Value(non_const_set.used_data()),
+ non_const_type_args));
+ ASSERT(const_set.GetClassId() == kImmutableLinkedHashSetCid);
+ ASSERT(const_set.IsCanonical());
+
+ const_argument = Api::NewHandle(thread, const_set.ptr());
+ }
+
+ Dart_Handle contains_5_result =
+ Dart_Invoke(lib, NewString("containsFive"), 1, &const_argument);
+ EXPECT_VALID(contains_5_result);
+ EXPECT_TRUE(contains_5_result);
+
+ {
+ TransitionNativeToVM transition(thread);
+ const auto& non_const_object =
+ Object::Handle(Api::UnwrapHandle(non_const_result));
+ const auto& non_const_set = LinkedHashSet::Cast(non_const_object);
+ const auto& const_object =
+ Object::Handle(Api::UnwrapHandle(const_argument));
+ const auto& const_set = LinkedHashSet::Cast(const_object);
+
+ EXPECT(non_const_set.GetClassId() != const_set.GetClassId());
+
+ // Check that the index is identical.
+ EXPECT(LinkedHashBaseEqual(non_const_set, const_set,
+ /*print_diff=*/true));
+ }
+}
+
+TEST_CASE(ImmutableLinkedHashSet_small) {
+ const char* kScript = R"(
+constValue() => const {1, 2, 3, 5, 8, 13};
+
+nonConstValue() => {1, 2, 3, 5, 8, 13};
+
+void init() {
+ constValue().contains(null);
+}
+)";
+ HashSetNonConstEqualsConst(kScript);
+}
+
+TEST_CASE(ImmutableLinkedHashSet_larger) {
+ const char* kScript = R"(
+const Set<String> tokensThatMayFollowTypeArg = {
+ '(',
+ ')',
+ ']',
+ '}',
+ ':',
+ ';',
+ ',',
+ '.',
+ '?',
+ '==',
+ '!=',
+ '..',
+ '?.',
+ '\?\?',
+ '?..',
+ '&',
+ '|',
+ '^',
+ '+',
+ '*',
+ '%',
+ '/',
+ '~/'
+};
+
+final Set<String> tokensThatMayFollowTypeArgNonConst = {
+ '(',
+ ')',
+ ']',
+ '}',
+ ':',
+ ';',
+ ',',
+ '.',
+ '?',
+ '==',
+ '!=',
+ '..',
+ '?.',
+ '\?\?',
+ '?..',
+ '&',
+ '|',
+ '^',
+ '+',
+ '*',
+ '%',
+ '/',
+ '~/'
+};
+
+constValue() => tokensThatMayFollowTypeArg;
+
+nonConstValue() => tokensThatMayFollowTypeArgNonConst;
+
+void init() {
+ constValue().contains(null);
+}
+)";
+ HashSetNonConstEqualsConst(kScript);
+}
+
static void CheckConcatAll(const String* data[], intptr_t n) {
Thread* thread = Thread::Current();
Zone* zone = thread->zone();
diff --git a/runtime/vm/raw_object.cc b/runtime/vm/raw_object.cc
index b79c6b9..ae6c199 100644
--- a/runtime/vm/raw_object.cc
+++ b/runtime/vm/raw_object.cc
@@ -727,6 +727,18 @@
return UntaggedArray::VisitArrayPointers(raw_obj, visitor);
}
+intptr_t UntaggedImmutableLinkedHashMap::VisitImmutableLinkedHashMapPointers(
+ ImmutableLinkedHashMapPtr raw_obj,
+ ObjectPointerVisitor* visitor) {
+ return UntaggedLinkedHashMap::VisitLinkedHashMapPointers(raw_obj, visitor);
+}
+
+intptr_t UntaggedImmutableLinkedHashSet::VisitImmutableLinkedHashSetPointers(
+ ImmutableLinkedHashSetPtr raw_obj,
+ ObjectPointerVisitor* visitor) {
+ return UntaggedLinkedHashSet::VisitLinkedHashSetPointers(raw_obj, visitor);
+}
+
void UntaggedObject::RememberCard(ObjectPtr const* slot) {
OldPage::Of(static_cast<ObjectPtr>(this))->RememberCard(slot);
}
diff --git a/runtime/vm/raw_object.h b/runtime/vm/raw_object.h
index 5fd0641..58b66be 100644
--- a/runtime/vm/raw_object.h
+++ b/runtime/vm/raw_object.h
@@ -2943,6 +2943,8 @@
friend class LinkedHashMapSerializationCluster;
friend class LinkedHashMapDeserializationCluster;
+ friend class LinkedHashSetSerializationCluster;
+ friend class LinkedHashSetDeserializationCluster;
friend class CodeSerializationCluster;
friend class CodeDeserializationCluster;
friend class Deserializer;
@@ -2951,6 +2953,7 @@
friend class GrowableObjectArray;
friend class LinkedHashMap;
friend class UntaggedLinkedHashMap;
+ friend class UntaggedImmutableLinkedHashMap;
friend class Object;
friend class ICData; // For high performance access.
friend class SubtypeTestCache; // For high performance access.
@@ -2999,10 +3002,22 @@
class UntaggedLinkedHashMap : public UntaggedLinkedHashBase {
RAW_HEAP_OBJECT_IMPLEMENTATION(LinkedHashMap);
+
+ friend class UntaggedImmutableLinkedHashMap;
+};
+
+class UntaggedImmutableLinkedHashMap : public UntaggedLinkedHashMap {
+ RAW_HEAP_OBJECT_IMPLEMENTATION(ImmutableLinkedHashMap);
};
class UntaggedLinkedHashSet : public UntaggedLinkedHashBase {
RAW_HEAP_OBJECT_IMPLEMENTATION(LinkedHashSet);
+
+ friend class UntaggedImmutableLinkedHashSet;
+};
+
+class UntaggedImmutableLinkedHashSet : public UntaggedLinkedHashSet {
+ RAW_HEAP_OBJECT_IMPLEMENTATION(ImmutableLinkedHashSet);
};
class UntaggedFloat32x4 : public UntaggedInstance {
diff --git a/runtime/vm/symbols.h b/runtime/vm/symbols.h
index f5cc31c..eee7c62 100644
--- a/runtime/vm/symbols.h
+++ b/runtime/vm/symbols.h
@@ -325,6 +325,8 @@
V(_GrowableListGenerateFactory, "_GrowableList.generate") \
V(_GrowableListLiteralFactory, "_GrowableList._literal") \
V(_GrowableListWithData, "_GrowableList._withData") \
+ V(_ImmutableLinkedHashMap, "_InternalImmutableLinkedHashMap") \
+ V(_ImmutableLinkedHashSet, "_CompactImmutableLinkedHashSet") \
V(_ImmutableList, "_ImmutableList") \
V(_Int16ArrayFactory, "Int16List.") \
V(_Int16ArrayView, "_Int16ArrayView") \
diff --git a/runtime/vm/tagged_pointer.h b/runtime/vm/tagged_pointer.h
index 19444ff..c7c8b94 100644
--- a/runtime/vm/tagged_pointer.h
+++ b/runtime/vm/tagged_pointer.h
@@ -397,6 +397,8 @@
DEFINE_TAGGED_POINTER(LinkedHashBase, Instance)
DEFINE_TAGGED_POINTER(LinkedHashMap, LinkedHashBase)
DEFINE_TAGGED_POINTER(LinkedHashSet, LinkedHashBase)
+DEFINE_TAGGED_POINTER(ImmutableLinkedHashMap, LinkedHashMap)
+DEFINE_TAGGED_POINTER(ImmutableLinkedHashSet, LinkedHashSet)
DEFINE_TAGGED_POINTER(Float32x4, Instance)
DEFINE_TAGGED_POINTER(Int32x4, Instance)
DEFINE_TAGGED_POINTER(Float64x2, Instance)
diff --git a/sdk/lib/_internal/vm/lib/class_id_fasta.dart b/sdk/lib/_internal/vm/lib/class_id_fasta.dart
index 006314b..52c81ad 100644
--- a/sdk/lib/_internal/vm/lib/class_id_fasta.dart
+++ b/sdk/lib/_internal/vm/lib/class_id_fasta.dart
@@ -8,7 +8,7 @@
class ClassID {
@pragma("vm:recognized", "other")
@pragma("vm:exact-result-type", "dart:core#_Smi")
- static int getID(Object value) native "ClassID_getID";
+ static int getID(Object? value) native "ClassID_getID";
@pragma("vm:entry-point")
static final int cidArray = 0;
@@ -38,4 +38,8 @@
static final int cidUint8ClampedArray = 0;
@pragma("vm:entry-point")
static final int cidExternalUint8ClampedArray = 0;
+ // Used in const hashing to determine whether we're dealing with a
+ // user-defined const. See lib/_internal/vm/lib/compact_hash.dart.
+ @pragma("vm:entry-point")
+ static final int numPredefinedCids = 0;
}
diff --git a/sdk/lib/_internal/vm/lib/collection_patch.dart b/sdk/lib/_internal/vm/lib/collection_patch.dart
index a1acbcb..4755514 100644
--- a/sdk/lib/_internal/vm/lib/collection_patch.dart
+++ b/sdk/lib/_internal/vm/lib/collection_patch.dart
@@ -9,7 +9,9 @@
import "dart:_internal" as internal;
-import "dart:_internal" show patch, IterableElementError;
+import "dart:_internal" show patch, IterableElementError, ClassID;
+
+import "dart:math" show max;
import "dart:typed_data" show Uint32List;
diff --git a/sdk/lib/_internal/vm/lib/compact_hash.dart b/sdk/lib/_internal/vm/lib/compact_hash.dart
index dc552c7..29c57e7 100644
--- a/sdk/lib/_internal/vm/lib/compact_hash.dart
+++ b/sdk/lib/_internal/vm/lib/compact_hash.dart
@@ -30,6 +30,8 @@
int _hashMask = 0;
// Fixed-length list of keys (set) or key/value at even/odd indices (map).
+ //
+ // Can be either a mutable or immutable list.
List _data = _initialData;
// Length of _data that is used (i.e., keys + values for a map).
@@ -87,6 +89,27 @@
void set _deletedKeys(int value) native "LinkedHashBase_setDeletedKeys";
}
+// Base class for VM-internal classes; keep in sync with _HashFieldBase.
+abstract class _HashVMImmutableBase extends _HashVMBase {
+ // The data is an immutable list rather than a mutable list.
+ @pragma("vm:recognized", "other")
+ @pragma("vm:exact-result-type", "dart:core#_ImmutableList")
+ @pragma("vm:prefer-inline")
+ List get _data native "ImmutableLinkedHashBase_getData";
+
+ // The index is nullable rather than not nullable.
+ @pragma("vm:recognized", "other")
+ @pragma("vm:prefer-inline")
+ Uint32List? get _indexNullable native "ImmutableLinkedHashBase_getIndex";
+ Uint32List get _index => _indexNullable!;
+
+ // Uses store-release atomic.
+ @pragma("vm:recognized", "other")
+ @pragma("vm:prefer-inline")
+ void set _index(Uint32List value)
+ native "ImmutableLinkedHashBase_setIndexStoreRelease";
+}
+
// This mixin can be applied to _HashFieldBase or _HashVMBase (for
// normal and VM-internalized classes, respectiveley), which provide the
// actual fields/accessors that this mixin assumes.
@@ -107,6 +130,7 @@
// On 32-bit, the top bits are wasted to avoid Mint allocation.
// TODO(koda): Reclaim the bits by making the compiler treat hash patterns
// as unsigned words.
+ // Keep consistent with IndexSizeToHashMask in runtime/vm/object.h.
static int _indexSizeToHashMask(int indexSize) {
int indexBits = indexSize.bitLength - 2;
return internal.has63BitSmis
@@ -155,6 +179,20 @@
bool _equals(e1, e2) => identical(e1, e2);
}
+class _OperatorEqualsAndCanonicalHashCode {
+ static final int cidSymbol = ClassID.getID(#a);
+
+ int _hashCode(e) {
+ final int cid = ClassID.getID(e);
+ if (cid < ClassID.numPredefinedCids || cid == cidSymbol) {
+ return e.hashCode;
+ }
+ return identityHashCode(e);
+ }
+
+ bool _equals(e1, e2) => e1 == e2;
+}
+
final _initialIndex = new Uint32List(1);
// Note: not const. Const arrays are made immutable by having a different class
// than regular arrays that throws on element assignment. We want the data field
@@ -179,6 +217,82 @@
}
}
+// This is essentially the same class as _InternalLinkedHashMap, 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("vm:entry-point")
+class _InternalImmutableLinkedHashMap<K, V> extends _HashVMImmutableBase
+ with
+ MapMixin<K, V>,
+ _LinkedHashMapMixin<K, V>,
+ _HashBase,
+ _OperatorEqualsAndCanonicalHashCode,
+ _UnmodifiableMapMixin<K, V>
+ implements LinkedHashMap<K, V> {
+ factory _InternalImmutableLinkedHashMap._uninstantiable() {
+ throw new UnsupportedError("ImmutableMap can only be allocated by the VM");
+ }
+
+ bool containsKey(Object? key) {
+ if (_indexNullable == null) {
+ _createIndex();
+ }
+ return super.containsKey(key);
+ }
+
+ V? operator [](Object? key) {
+ if (_indexNullable == null) {
+ _createIndex();
+ }
+ return super[key];
+ }
+
+ void _createIndex() {
+ assert(_indexNullable == null);
+
+ final size = max(_data.length, _HashBase._INITIAL_INDEX_SIZE);
+ assert(size == _roundUpToPowerOfTwo(size));
+ final newIndex = new Uint32List(size);
+ final hashMask = _HashBase._indexSizeToHashMask(size);
+ assert(_hashMask == hashMask);
+
+ for (int j = 0; j < _usedData; j += 2) {
+ final key = _data[j];
+ final value = _data[j + 1];
+
+ final fullHash = _hashCode(key);
+ final hashPattern = _HashBase._hashPattern(fullHash, hashMask, size);
+ final d =
+ _findValueOrInsertPoint(key, fullHash, hashPattern, size, newIndex);
+ // We just allocated the index, so we should not find this key in it yet.
+ assert(d <= 0);
+
+ final i = -d;
+
+ assert(1 <= hashPattern && hashPattern < (1 << 32));
+ final index = j >> 1;
+ assert((index & hashPattern) == 0);
+ newIndex[i] = hashPattern | index;
+ }
+
+ // Publish new index, uses store release semantics.
+ _index = newIndex;
+ }
+}
+
+// Implementation is from "Hacker's Delight" by Henry S. Warren, Jr.,
+// figure 3-3, page 48, where the function is called clp2.
+int _roundUpToPowerOfTwo(int x) {
+ x = x - 1;
+ x = x | (x >> 1);
+ x = x | (x >> 2);
+ x = x | (x >> 4);
+ x = x | (x >> 8);
+ x = x | (x >> 16);
+ x = x | (x >> 32);
+ return x + 1;
+}
+
abstract class _LinkedHashMapMixin<K, V> implements _HashBase {
int _hashCode(e);
bool _equals(e1, e2);
@@ -260,13 +374,14 @@
}
// If key is present, returns the index of the value in _data, else returns
- // the negated insertion point in _index.
- int _findValueOrInsertPoint(K key, int fullHash, int hashPattern, int size) {
+ // the negated insertion point in index.
+ int _findValueOrInsertPoint(
+ K key, int fullHash, int hashPattern, int size, Uint32List index) {
final int sizeMask = size - 1;
final int maxEntries = size >> 1;
int i = _HashBase._firstProbe(fullHash, sizeMask);
int firstDeleted = -1;
- int pair = _index[i];
+ int pair = index[i];
while (pair != _HashBase._UNUSED_PAIR) {
if (pair == _HashBase._DELETED_PAIR) {
if (firstDeleted < 0) {
@@ -282,7 +397,7 @@
}
}
i = _HashBase._nextProbe(i, sizeMask);
- pair = _index[i];
+ pair = index[i];
}
return firstDeleted >= 0 ? -firstDeleted : -i;
}
@@ -291,7 +406,8 @@
final int size = _index.length;
final int fullHash = _hashCode(key);
final int hashPattern = _HashBase._hashPattern(fullHash, _hashMask, size);
- final int d = _findValueOrInsertPoint(key, fullHash, hashPattern, size);
+ final int d =
+ _findValueOrInsertPoint(key, fullHash, hashPattern, size, _index);
if (d > 0) {
_data[d] = value;
} else {
@@ -304,7 +420,8 @@
final int size = _index.length;
final int fullHash = _hashCode(key);
final int hashPattern = _HashBase._hashPattern(fullHash, _hashMask, size);
- final int d = _findValueOrInsertPoint(key, fullHash, hashPattern, size);
+ final int d =
+ _findValueOrInsertPoint(key, fullHash, hashPattern, size, _index);
if (d > 0) {
return _data[d];
}
@@ -682,6 +799,84 @@
Set<E> toSet() => new _CompactLinkedHashSet<E>()..addAll(this);
}
+@pragma("vm:entry-point")
+class _CompactImmutableLinkedHashSet<E> extends _HashVMImmutableBase
+ with
+ SetMixin<E>,
+ _LinkedHashSetMixin<E>,
+ _HashBase,
+ _OperatorEqualsAndCanonicalHashCode,
+ _UnmodifiableSetMixin<E>
+ implements LinkedHashSet<E> {
+ factory _CompactImmutableLinkedHashSet._uninstantiable() {
+ throw new UnsupportedError("ImmutableSet can only be allocated by the VM");
+ }
+
+ E? lookup(Object? key) {
+ if (_indexNullable == null) {
+ _createIndex();
+ }
+ return super.lookup(key);
+ }
+
+ bool contains(Object? key) {
+ if (_indexNullable == null) {
+ _createIndex();
+ }
+ return super.contains(key);
+ }
+
+ void _createIndex() {
+ assert(_indexNullable == null);
+
+ final size = _roundUpToPowerOfTwo(
+ max(_data.length * 2, _HashBase._INITIAL_INDEX_SIZE));
+ final index = new Uint32List(size);
+ final hashMask = _HashBase._indexSizeToHashMask(size);
+ assert(_hashMask == hashMask);
+
+ final sizeMask = size - 1;
+ final maxEntries = size >> 1;
+
+ for (int j = 0; j < _usedData; j++) {
+ final key = _data[j];
+
+ final fullHash = _hashCode(key);
+ final hashPattern = _HashBase._hashPattern(fullHash, hashMask, size);
+
+ int i = _HashBase._firstProbe(fullHash, sizeMask);
+ int pair = index[i];
+ while (pair != _HashBase._UNUSED_PAIR) {
+ assert(pair != _HashBase._DELETED_PAIR);
+
+ final int d = hashPattern ^ pair;
+ if (d < maxEntries) {
+ // We should not already find an entry in the index.
+ assert(!_equals(key, _data[d]));
+ }
+
+ i = _HashBase._nextProbe(i, sizeMask);
+ pair = index[i];
+ }
+
+ final int insertionPoint = i;
+ assert(1 <= hashPattern && hashPattern < (1 << 32));
+ assert((hashPattern & j) == 0);
+ index[insertionPoint] = hashPattern | j;
+ }
+
+ // Publish new index, uses store release semantics.
+ _index = index;
+ }
+
+ Set<R> cast<R>() => Set.castFrom<E, R>(this, newSet: _newEmpty);
+
+ static Set<R> _newEmpty<R>() => new _CompactLinkedHashSet<R>();
+
+ // Returns a mutable set.
+ Set<E> toSet() => new _CompactLinkedHashSet<E>()..addAll(this);
+}
+
class _CompactLinkedIdentityHashSet<E> extends _HashFieldBase
with
SetMixin<E>,
diff --git a/sdk/lib/_internal/vm/lib/core_patch.dart b/sdk/lib/_internal/vm/lib/core_patch.dart
index b6587ef..561b7f1 100644
--- a/sdk/lib/_internal/vm/lib/core_patch.dart
+++ b/sdk/lib/_internal/vm/lib/core_patch.dart
@@ -72,7 +72,6 @@
// part "function_patch.dart";
// part "growable_array.dart";
// part "identical_patch.dart";
-// part "immutable_map.dart";
// part "integers.dart";
// part "integers_patch.dart";
// part "invocation_mirror_patch.dart";
diff --git a/sdk/lib/_internal/vm/lib/immutable_map.dart b/sdk/lib/_internal/vm/lib/immutable_map.dart
index 2f653f5..19ed15f 100644
--- a/sdk/lib/_internal/vm/lib/immutable_map.dart
+++ b/sdk/lib/_internal/vm/lib/immutable_map.dart
@@ -2,219 +2,5 @@
// 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.
-// part of "core_patch.dart";
-
-/// Immutable map class for compiler generated map literals.
-// TODO(lrn): Extend MapBase with UnmodifiableMapMixin when mixins
-// support forwarding const constructors.
-@pragma("vm:entry-point")
-class _ImmutableMap<K, V> implements Map<K, V> {
- final _ImmutableList _kvPairs;
-
- @pragma("vm:entry-point")
- const _ImmutableMap._create(_ImmutableList keyValuePairs)
- : _kvPairs = keyValuePairs;
-
- Map<K2, V2> cast<K2, V2>() => Map.castFrom<K, V, K2, V2>(this);
- V? operator [](Object? key) {
- // To preserve the key-value order of the map literal, the keys are
- // not sorted. Need to do linear search or implement an additional
- // lookup table.
- for (int i = 0; i < _kvPairs.length - 1; i += 2) {
- if (key == _kvPairs[i]) {
- return _kvPairs[i + 1];
- }
- }
- return null;
- }
-
- bool get isEmpty {
- return _kvPairs.length == 0;
- }
-
- bool get isNotEmpty => !isEmpty;
-
- int get length {
- return _kvPairs.length ~/ 2;
- }
-
- void forEach(void f(K key, V value)) {
- for (int i = 0; i < _kvPairs.length; i += 2) {
- f(_kvPairs[i], _kvPairs[i + 1]);
- }
- }
-
- Iterable<K> get keys {
- return new _ImmutableMapKeyIterable<K>(this);
- }
-
- Iterable<V> get values {
- return new _ImmutableMapValueIterable<V>(this);
- }
-
- bool containsKey(Object? key) {
- for (int i = 0; i < _kvPairs.length; i += 2) {
- if (key == _kvPairs[i]) {
- return true;
- }
- }
- return false;
- }
-
- bool containsValue(Object? value) {
- for (int i = 1; i < _kvPairs.length; i += 2) {
- if (value == _kvPairs[i]) {
- return true;
- }
- }
- return false;
- }
-
- void operator []=(K key, V value) {
- throw new UnsupportedError("Cannot set value in unmodifiable Map");
- }
-
- void addAll(Map<K, V> other) {
- throw new UnsupportedError("Cannot set value in unmodifiable Map");
- }
-
- V putIfAbsent(K key, V ifAbsent()) {
- throw new UnsupportedError("Cannot set value in unmodifiable Map");
- }
-
- void clear() {
- throw new UnsupportedError("Cannot clear unmodifiable Map");
- }
-
- V? remove(Object? key) {
- throw new UnsupportedError("Cannot remove from unmodifiable Map");
- }
-
- Iterable<MapEntry<K, V>> get entries =>
- new _ImmutableMapEntryIterable<K, V>(this);
-
- Map<K2, V2> map<K2, V2>(MapEntry<K2, V2> f(K key, V value)) {
- var result = <K2, V2>{};
- for (int i = 0; i < _kvPairs.length; i += 2) {
- var entry = f(_kvPairs[i], _kvPairs[i + 1]);
- result[entry.key] = entry.value;
- }
- return result;
- }
-
- void addEntries(Iterable<MapEntry<K, V>> newEntries) {
- throw new UnsupportedError("Cannot modify an unmodifiable Map");
- }
-
- V update(K key, V update(V value), {V ifAbsent()?}) {
- throw new UnsupportedError("Cannot modify an unmodifiable Map");
- }
-
- void updateAll(V update(K key, V value)) {
- throw new UnsupportedError("Cannot modify an unmodifiable Map");
- }
-
- void removeWhere(bool predicate(K key, V value)) {
- throw new UnsupportedError("Cannot modify an unmodifiable Map");
- }
-
- String toString() => MapBase.mapToString(this);
-}
-
-class _ImmutableMapKeyIterable<E> extends EfficientLengthIterable<E> {
- final _ImmutableMap _map;
- _ImmutableMapKeyIterable(this._map);
-
- Iterator<E> get iterator {
- return new _ImmutableMapKeyIterator<E>(_map);
- }
-
- int get length => _map.length;
-}
-
-class _ImmutableMapValueIterable<E> extends EfficientLengthIterable<E> {
- final _ImmutableMap _map;
- _ImmutableMapValueIterable(this._map);
-
- Iterator<E> get iterator {
- return new _ImmutableMapValueIterator<E>(_map);
- }
-
- int get length => _map.length;
-}
-
-class _ImmutableMapEntryIterable<K, V>
- extends EfficientLengthIterable<MapEntry<K, V>> {
- final _ImmutableMap _map;
- _ImmutableMapEntryIterable(this._map);
-
- Iterator<MapEntry<K, V>> get iterator {
- return new _ImmutableMapEntryIterator<K, V>(_map);
- }
-
- int get length => _map.length;
-}
-
-class _ImmutableMapKeyIterator<E> implements Iterator<E> {
- _ImmutableMap _map;
- int _nextIndex = 0;
- E? _current;
-
- _ImmutableMapKeyIterator(this._map);
-
- bool moveNext() {
- int newIndex = _nextIndex;
- if (newIndex < _map.length) {
- _nextIndex = newIndex + 1;
- _current = _map._kvPairs[newIndex * 2];
- return true;
- }
- _current = null;
- return false;
- }
-
- E get current => _current as E;
-}
-
-class _ImmutableMapValueIterator<E> implements Iterator<E> {
- _ImmutableMap _map;
- int _nextIndex = 0;
- E? _current;
-
- _ImmutableMapValueIterator(this._map);
-
- bool moveNext() {
- int newIndex = _nextIndex;
- if (newIndex < _map.length) {
- _nextIndex = newIndex + 1;
- _current = _map._kvPairs[newIndex * 2 + 1];
- return true;
- }
- _current = null;
- return false;
- }
-
- E get current => _current as E;
-}
-
-class _ImmutableMapEntryIterator<K, V> implements Iterator<MapEntry<K, V>> {
- _ImmutableMap _map;
- int _nextIndex = 0;
- MapEntry<K, V>? _current;
-
- _ImmutableMapEntryIterator(this._map);
-
- bool moveNext() {
- int newIndex = _nextIndex;
- if (newIndex < _map.length) {
- _nextIndex = newIndex + 1;
- _current = new MapEntry<K, V>(
- _map._kvPairs[newIndex * 2], _map._kvPairs[newIndex * 2 + 1]);
- return true;
- }
- _current = null;
- return false;
- }
-
- MapEntry<K, V> get current => _current as MapEntry<K, V>;
-}
+// TODO(http://dartbug.com/45908): Remove empty file after updating Flutter's
+// copies of libraries.json and libraries.yaml and waiting for roll into G3.
diff --git a/sdk/lib/libraries.json b/sdk/lib/libraries.json
index c1cf9c2..2ca5b70 100644
--- a/sdk/lib/libraries.json
+++ b/sdk/lib/libraries.json
@@ -56,7 +56,6 @@
"_internal/vm/lib/function_patch.dart",
"_internal/vm/lib/growable_array.dart",
"_internal/vm/lib/identical_patch.dart",
- "_internal/vm/lib/immutable_map.dart",
"_internal/vm/lib/integers.dart",
"_internal/vm/lib/integers_patch.dart",
"_internal/vm/lib/invocation_mirror_patch.dart",
diff --git a/sdk/lib/libraries.yaml b/sdk/lib/libraries.yaml
index 1b92562..1066ab0 100644
--- a/sdk/lib/libraries.yaml
+++ b/sdk/lib/libraries.yaml
@@ -63,7 +63,6 @@
- "_internal/vm/lib/function_patch.dart"
- "_internal/vm/lib/growable_array.dart"
- "_internal/vm/lib/identical_patch.dart"
- - "_internal/vm/lib/immutable_map.dart"
- "_internal/vm/lib/integers.dart"
- "_internal/vm/lib/integers_patch.dart"
- "_internal/vm/lib/invocation_mirror_patch.dart"
diff --git a/tools/VERSION b/tools/VERSION
index 8866cbd..6fdeec8 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
MAJOR 2
MINOR 15
PATCH 0
-PRERELEASE 82
+PRERELEASE 83
PRERELEASE_PATCH 0
\ No newline at end of file