Reland "Simplify json parser and eliminate dynamic calls."
This is a reland of e77ea8a17bd07f8033bb54281d30f88f443619f5. I've
undone the change to the name of the platformScript setter, restoring
the previous behavior of accepting anything and casting.
TEST=Existing tests.
Change-Id: I7e36935ef3784035769527dc5624191f38faaa40
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/232487
Reviewed-by: Lasse Nielsen <lrn@google.com>
Commit-Queue: Leaf Petersen <leafp@google.com>
diff --git a/pkg/compiler/test/analyses/api_allowed.json b/pkg/compiler/test/analyses/api_allowed.json
index 7fe7b5a..c54c832 100644
--- a/pkg/compiler/test/analyses/api_allowed.json
+++ b/pkg/compiler/test/analyses/api_allowed.json
@@ -1,4 +1,19 @@
{
+ "org-dartlang-sdk:///lib/_http/http_impl.dart": {
+ "Dynamic access of 'message'.": 3,
+ "Dynamic invocation of 'destroy'.": 1,
+ "Dynamic access of 'address'.": 2,
+ "Dynamic access of 'host'.": 2,
+ "Dynamic access of 'port'.": 2,
+ "Dynamic access of 'remoteAddress'.": 1,
+ "Dynamic access of 'remotePort'.": 1,
+ "Dynamic invocation of 'dart._http::_toJSON'.": 3,
+ "Dynamic invocation of 'listen'.": 1,
+ "Dynamic invocation of 'close'.": 1
+ },
+ "org-dartlang-sdk:///lib/_http/websocket_impl.dart": {
+ "Dynamic invocation of 'dart._http::_toJSON'.": 1
+ },
"org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_number.dart": {
"Dynamic invocation of '[]'.": 5
},
@@ -9,6 +24,12 @@
"Dynamic access of 'iterator'.": 1,
"Dynamic invocation of 'then'.": 1
},
+ "org-dartlang-sdk:///lib/_internal/js_runtime/lib/convert_patch.dart": {
+ "Dynamic invocation of 'clear'.": 1
+ },
+ "org-dartlang-sdk:///lib/convert/json.dart": {
+ "Dynamic invocation of 'toJson'.": 1
+ },
"org-dartlang-sdk:///lib/html/dart2js/html_dart2js.dart": {
"Dynamic access of 'style'.": 1,
"Dynamic invocation of 'remove'.": 2,
@@ -87,28 +108,5 @@
},
"org-dartlang-sdk:///lib/core/errors.dart": {
"Dynamic access of 'length'.": 2
- },
- "org-dartlang-sdk:///lib/_internal/js_runtime/lib/convert_patch.dart": {
- "Dynamic invocation of 'clear'.": 1
- },
- "org-dartlang-sdk:///lib/convert/json.dart": {
- "Dynamic invocation of 'toJson'.": 1
- },
- "org-dartlang-sdk:///lib/_http/http_impl.dart": {
- "Dynamic access of 'message'.": 3,
- "Dynamic invocation of 'destroy'.": 2,
- "Dynamic access of 'address'.": 3,
- "Dynamic access of 'type'.": 1,
- "Dynamic invocation of 'setOption'.": 1,
- "Dynamic access of 'host'.": 2,
- "Dynamic access of 'port'.": 2,
- "Dynamic access of 'remoteAddress'.": 1,
- "Dynamic access of 'remotePort'.": 1,
- "Dynamic invocation of 'dart._http::_toJSON'.": 3,
- "Dynamic invocation of 'listen'.": 1,
- "Dynamic invocation of 'close'.": 1
- },
- "org-dartlang-sdk:///lib/_http/websocket_impl.dart": {
- "Dynamic invocation of 'dart._http::_toJSON'.": 1
}
}
\ No newline at end of file
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/enum_from_lib_used_as_type.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/enum_from_lib_used_as_type.dart.expect
index 7777d7a..2f5ecea 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/enum_from_lib_used_as_type.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/enum_from_lib_used_as_type.dart.expect
@@ -22,6 +22,6 @@
synthetic constructor •() → self::Class
: super core::Object::•()
;
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3398,getterSelectorId:3399] method method([@vm.inferred-type.metadata=dart.core::Null? (value: null)] self::Enum e) → core::int
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3331,getterSelectorId:3332] method method([@vm.inferred-type.metadata=dart.core::Null? (value: null)] self::Enum e) → core::int
return [@vm.inferred-type.metadata=!] e.{core::_Enum::index}{core::int};
}
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/create_test.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/create_test.dart.expect
index a2ce7a5..3edc30c 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/create_test.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/create_test.dart.expect
@@ -37,9 +37,9 @@
class FooKeep extends pro::GeneratedMessage {
[@vm.inferred-type.metadata=protobuf::BuilderInfo?] static final field pro::BuilderInfo _i = let final pro::BuilderInfo #t1 = new pro::BuilderInfo::•(#C1 ?{core::String} "" : "FooKeep") in block {
[@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::BarKeep>(1, #C1 ?{core::String} "" : "barKeep", "barKeep", #C2){(core::int, core::String, {protoName: core::String?, subBuilder: () →? self::BarKeep}) → void};
- [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::add}<Null>(0, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
[@vm.direct-call.metadata=protobuf::BuilderInfo.m] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::m}<core::String, self::BarKeep>(#C1 ?{core::String} "" : "mapKeep", #C2){(core::int, core::String, {defaultEnumValue: pro::ProtobufEnum?, entryClassName: core::String?, enumValues: core::List<pro::ProtobufEnum>?, keyFieldType: core::int?, packageName: pro::PackageName, protoName: core::String?, valueCreator: () →? pro::GeneratedMessage, valueFieldType: core::int?, valueOf: (core::int) →? pro::ProtobufEnum?}) → void};
- [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::add}<Null>(0, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
[@vm.direct-call.metadata=protobuf::BuilderInfo.a] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::a}<core::int>(5, #C1 ?{core::String} "" : "aKeep"){(core::int, core::String, core::int, {defaultOrMaker: dynamic, enumValues: core::List<pro::ProtobufEnum>?, protoName: core::String?, subBuilder: () →? pro::GeneratedMessage, valueOf: (core::int) →? pro::ProtobufEnum?}) → void};
[@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::HasKeep>(6, #C1 ?{core::String} "" : "hasKeep", "hasKeep", #C3){(core::int, core::String, {protoName: core::String?, subBuilder: () →? self::HasKeep}) → void};
[@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::ClearKeep>(7, #C1 ?{core::String} "" : "clearKeep", "clearKeep", #C4){(core::int, core::String, {protoName: core::String?, subBuilder: () →? self::ClearKeep}) → void};
@@ -82,7 +82,7 @@
class BarKeep extends pro::GeneratedMessage {
[@vm.inferred-type.metadata=protobuf::BuilderInfo?] static final field pro::BuilderInfo _i = let final pro::BuilderInfo #t2 = new pro::BuilderInfo::•(#C1 ?{core::String} "" : "BarKeep") in block {
[@vm.direct-call.metadata=protobuf::BuilderInfo.a] [@vm.inferred-type.metadata=!? (skip check)] #t2.{pro::BuilderInfo::a}<core::int>(1, #C1 ?{core::String} "" : "aKeep"){(core::int, core::String, core::int, {defaultOrMaker: dynamic, enumValues: core::List<pro::ProtobufEnum>?, protoName: core::String?, subBuilder: () →? pro::GeneratedMessage, valueOf: (core::int) →? pro::ProtobufEnum?}) → void};
- [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t2.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t2.{pro::BuilderInfo::add}<Null>(0, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
[@vm.direct-call.metadata=protobuf::BuilderInfo.hasRequiredFields] [@vm.inferred-type.metadata=!? (skip check)] #t2.{pro::BuilderInfo::hasRequiredFields} = false;
} =>#t2;
constructor _() → self::BarKeep
@@ -105,7 +105,7 @@
}
class HasKeep extends pro::GeneratedMessage {
[@vm.inferred-type.metadata=protobuf::BuilderInfo?] static final field pro::BuilderInfo _i = let final pro::BuilderInfo #t3 = new pro::BuilderInfo::•(#C1 ?{core::String} "" : "HasKeep") in block {
- [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t3.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t3.{pro::BuilderInfo::add}<Null>(0, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
[@vm.direct-call.metadata=protobuf::BuilderInfo.hasRequiredFields] [@vm.inferred-type.metadata=!? (skip check)] #t3.{pro::BuilderInfo::hasRequiredFields} = false;
} =>#t3;
constructor _() → self::HasKeep
@@ -119,7 +119,7 @@
}
class ClearKeep extends pro::GeneratedMessage {
[@vm.inferred-type.metadata=protobuf::BuilderInfo?] static final field pro::BuilderInfo _i = let final pro::BuilderInfo #t4 = new pro::BuilderInfo::•(#C1 ?{core::String} "" : "ClearKeep") in block {
- [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t4.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t4.{pro::BuilderInfo::add}<Null>(0, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
[@vm.direct-call.metadata=protobuf::BuilderInfo.hasRequiredFields] [@vm.inferred-type.metadata=!? (skip check)] #t4.{pro::BuilderInfo::hasRequiredFields} = false;
} =>#t4;
constructor _() → self::ClearKeep
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/decode_test.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/decode_test.dart.expect
index a36af4a..5f438f9 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/decode_test.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/decode_test.dart.expect
@@ -30,9 +30,9 @@
class FooKeep extends pro::GeneratedMessage {
[@vm.inferred-type.metadata=protobuf::BuilderInfo?] static final field pro::BuilderInfo _i = let final pro::BuilderInfo #t1 = new pro::BuilderInfo::•(#C1 ?{core::String} "" : "FooKeep", createEmptyInstance: #C2) in block {
[@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::BarKeep>(1, #C1 ?{core::String} "" : "barKeep", "barKeep", #C3){(core::int, core::String, {protoName: core::String?, subBuilder: () →? self::BarKeep}) → void};
- [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::add}<Null>(0, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
[@vm.direct-call.metadata=protobuf::BuilderInfo.m] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::m}<core::String, self::BarKeep>(#C1 ?{core::String} "" : "mapKeep", #C3){(core::int, core::String, {defaultEnumValue: pro::ProtobufEnum?, entryClassName: core::String?, enumValues: core::List<pro::ProtobufEnum>?, keyFieldType: core::int?, packageName: pro::PackageName, protoName: core::String?, valueCreator: () →? pro::GeneratedMessage, valueFieldType: core::int?, valueOf: (core::int) →? pro::ProtobufEnum?}) → void};
- [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::add}<Null>(0, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
[@vm.direct-call.metadata=protobuf::BuilderInfo.a] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::a}<core::int>(5, #C1 ?{core::String} "" : "aKeep"){(core::int, core::String, core::int, {defaultOrMaker: dynamic, enumValues: core::List<pro::ProtobufEnum>?, protoName: core::String?, subBuilder: () →? pro::GeneratedMessage, valueOf: (core::int) →? pro::ProtobufEnum?}) → void};
[@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::HasKeep>(6, #C1 ?{core::String} "" : "hasKeep", "hasKeep", #C4){(core::int, core::String, {protoName: core::String?, subBuilder: () →? self::HasKeep}) → void};
[@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::ClearKeep>(7, #C1 ?{core::String} "" : "clearKeep", "clearKeep", #C5){(core::int, core::String, {protoName: core::String?, subBuilder: () →? self::ClearKeep}) → void};
@@ -69,7 +69,7 @@
class BarKeep extends pro::GeneratedMessage {
[@vm.inferred-type.metadata=protobuf::BuilderInfo?] static final field pro::BuilderInfo _i = let final pro::BuilderInfo #t3 = new pro::BuilderInfo::•(#C1 ?{core::String} "" : "BarKeep", createEmptyInstance: #C3) in block {
[@vm.direct-call.metadata=protobuf::BuilderInfo.a] [@vm.inferred-type.metadata=!? (skip check)] #t3.{pro::BuilderInfo::a}<core::int>(1, #C1 ?{core::String} "" : "aKeep"){(core::int, core::String, core::int, {defaultOrMaker: dynamic, enumValues: core::List<pro::ProtobufEnum>?, protoName: core::String?, subBuilder: () →? pro::GeneratedMessage, valueOf: (core::int) →? pro::ProtobufEnum?}) → void};
- [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t3.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t3.{pro::BuilderInfo::add}<Null>(0, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
[@vm.direct-call.metadata=protobuf::BuilderInfo.hasRequiredFields] [@vm.inferred-type.metadata=!? (skip check)] #t3.{pro::BuilderInfo::hasRequiredFields} = false;
} =>#t3;
constructor _() → self::BarKeep
@@ -86,7 +86,7 @@
}
class HasKeep extends pro::GeneratedMessage {
[@vm.inferred-type.metadata=protobuf::BuilderInfo?] static final field pro::BuilderInfo _i = let final pro::BuilderInfo #t4 = new pro::BuilderInfo::•(#C1 ?{core::String} "" : "HasKeep", createEmptyInstance: #C4) in block {
- [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t4.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t4.{pro::BuilderInfo::add}<Null>(0, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
[@vm.direct-call.metadata=protobuf::BuilderInfo.hasRequiredFields] [@vm.inferred-type.metadata=!? (skip check)] #t4.{pro::BuilderInfo::hasRequiredFields} = false;
} =>#t4;
constructor _() → self::HasKeep
@@ -100,7 +100,7 @@
}
class ClearKeep extends pro::GeneratedMessage {
[@vm.inferred-type.metadata=protobuf::BuilderInfo?] static final field pro::BuilderInfo _i = let final pro::BuilderInfo #t5 = new pro::BuilderInfo::•(#C1 ?{core::String} "" : "ClearKeep", createEmptyInstance: #C5) in block {
- [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t5.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t5.{pro::BuilderInfo::add}<Null>(0, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
[@vm.direct-call.metadata=protobuf::BuilderInfo.hasRequiredFields] [@vm.inferred-type.metadata=!? (skip check)] #t5.{pro::BuilderInfo::hasRequiredFields} = false;
} =>#t5;
constructor _() → self::ClearKeep
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/encode_all_fields.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/encode_all_fields.dart.expect
index 423420c..0df0c27 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/encode_all_fields.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/encode_all_fields.dart.expect
@@ -44,7 +44,7 @@
class FooKeep extends pro::GeneratedMessage {
[@vm.inferred-type.metadata=protobuf::BuilderInfo?] static final field pro::BuilderInfo _i = let final pro::BuilderInfo #t1 = new pro::BuilderInfo::•(#C1 ?{core::String} "" : "FooKeep") in block {
[@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::BarKeep>(1, #C1 ?{core::String} "" : "barKeep", "barKeep", #C2){(core::int, core::String, {protoName: core::String?, subBuilder: () →? self::BarKeep}) → void};
- [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::add}<Null>(0, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
[@vm.direct-call.metadata=protobuf::BuilderInfo.m] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::m}<core::String, self::BarKeep>(3, #C1 ?{core::String} "" : "mapKeep", "FooKeep.MapKeepEntry", "mapKeep", #C2){(core::int, core::String, {defaultEnumValue: pro::ProtobufEnum?, entryClassName: core::String?, enumValues: core::List<pro::ProtobufEnum>?, keyFieldType: core::int?, packageName: pro::PackageName, protoName: core::String?, valueCreator: () →? pro::GeneratedMessage, valueFieldType: core::int?, valueOf: (core::int) →? pro::ProtobufEnum?}) → void};
[@vm.direct-call.metadata=protobuf::BuilderInfo.m] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::m}<core::String, self::ZopDrop>(4, #C1 ?{core::String} "" : "mapDrop", "FooKeep.MapDropEntry", "mapDrop", #C3){(core::int, core::String, {defaultEnumValue: pro::ProtobufEnum?, entryClassName: core::String?, enumValues: core::List<pro::ProtobufEnum>?, keyFieldType: core::int?, packageName: pro::PackageName, protoName: core::String?, valueCreator: () →? pro::GeneratedMessage, valueFieldType: core::int?, valueOf: (core::int) →? pro::ProtobufEnum?}) → void};
[@vm.direct-call.metadata=protobuf::BuilderInfo.a] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::a}<core::int>(5, #C1 ?{core::String} "" : "aKeep", "aKeep"){(core::int, core::String, core::int, {defaultOrMaker: dynamic, enumValues: core::List<pro::ProtobufEnum>?, protoName: core::String?, subBuilder: () →? pro::GeneratedMessage, valueOf: (core::int) →? pro::ProtobufEnum?}) → void};
@@ -112,7 +112,7 @@
}
class HasKeep extends pro::GeneratedMessage {
[@vm.inferred-type.metadata=protobuf::BuilderInfo?] static final field pro::BuilderInfo _i = let final pro::BuilderInfo #t3 = new pro::BuilderInfo::•(#C1 ?{core::String} "" : "HasKeep") in block {
- [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t3.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t3.{pro::BuilderInfo::add}<Null>(0, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
[@vm.direct-call.metadata=protobuf::BuilderInfo.hasRequiredFields] [@vm.inferred-type.metadata=!? (skip check)] #t3.{pro::BuilderInfo::hasRequiredFields} = false;
} =>#t3;
constructor _() → self::HasKeep
@@ -128,7 +128,7 @@
}
class ClearKeep extends pro::GeneratedMessage {
[@vm.inferred-type.metadata=protobuf::BuilderInfo?] static final field pro::BuilderInfo _i = let final pro::BuilderInfo #t4 = new pro::BuilderInfo::•(#C1 ?{core::String} "" : "ClearKeep") in block {
- [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t4.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t4.{pro::BuilderInfo::add}<Null>(0, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
[@vm.direct-call.metadata=protobuf::BuilderInfo.hasRequiredFields] [@vm.inferred-type.metadata=!? (skip check)] #t4.{pro::BuilderInfo::hasRequiredFields} = false;
} =>#t4;
constructor _() → self::ClearKeep
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/freeze_test.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/freeze_test.dart.expect
index c046050..426f988 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/freeze_test.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/freeze_test.dart.expect
@@ -40,9 +40,9 @@
class FooKeep extends pro::GeneratedMessage {
[@vm.inferred-type.metadata=protobuf::BuilderInfo?] static final field pro::BuilderInfo _i = let final pro::BuilderInfo #t1 = new pro::BuilderInfo::•(#C1 ?{core::String} "" : "FooKeep") in block {
[@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::BarKeep>(1, #C1 ?{core::String} "" : "barKeep", "barKeep", #C2){(core::int, core::String, {protoName: core::String?, subBuilder: () →? self::BarKeep}) → void};
- [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::add}<Null>(0, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
[@vm.direct-call.metadata=protobuf::BuilderInfo.m] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::m}<core::String, self::BarKeep>(#C1 ?{core::String} "" : "mapKeep", #C2){(core::int, core::String, {defaultEnumValue: pro::ProtobufEnum?, entryClassName: core::String?, enumValues: core::List<pro::ProtobufEnum>?, keyFieldType: core::int?, packageName: pro::PackageName, protoName: core::String?, valueCreator: () →? pro::GeneratedMessage, valueFieldType: core::int?, valueOf: (core::int) →? pro::ProtobufEnum?}) → void};
- [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::add}<Null>(0, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
[@vm.direct-call.metadata=protobuf::BuilderInfo.a] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::a}<core::int>(5, #C1 ?{core::String} "" : "aKeep"){(core::int, core::String, core::int, {defaultOrMaker: dynamic, enumValues: core::List<pro::ProtobufEnum>?, protoName: core::String?, subBuilder: () →? pro::GeneratedMessage, valueOf: (core::int) →? pro::ProtobufEnum?}) → void};
[@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::HasKeep>(6, #C1 ?{core::String} "" : "hasKeep", "hasKeep", #C3){(core::int, core::String, {protoName: core::String?, subBuilder: () →? self::HasKeep}) → void};
[@vm.direct-call.metadata=protobuf::BuilderInfo.aOM] [@vm.inferred-type.metadata=!? (skip check)] #t1.{pro::BuilderInfo::aOM}<self::ClearKeep>(7, #C1 ?{core::String} "" : "clearKeep", "clearKeep", #C4){(core::int, core::String, {protoName: core::String?, subBuilder: () →? self::ClearKeep}) → void};
@@ -85,7 +85,7 @@
class BarKeep extends pro::GeneratedMessage {
[@vm.inferred-type.metadata=protobuf::BuilderInfo?] static final field pro::BuilderInfo _i = let final pro::BuilderInfo #t2 = new pro::BuilderInfo::•(#C1 ?{core::String} "" : "BarKeep") in block {
[@vm.direct-call.metadata=protobuf::BuilderInfo.a] [@vm.inferred-type.metadata=!? (skip check)] #t2.{pro::BuilderInfo::a}<core::int>(1, #C1 ?{core::String} "" : "aKeep"){(core::int, core::String, core::int, {defaultOrMaker: dynamic, enumValues: core::List<pro::ProtobufEnum>?, protoName: core::String?, subBuilder: () →? pro::GeneratedMessage, valueOf: (core::int) →? pro::ProtobufEnum?}) → void};
- [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t2.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t2.{pro::BuilderInfo::add}<Null>(0, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
[@vm.direct-call.metadata=protobuf::BuilderInfo.hasRequiredFields] [@vm.inferred-type.metadata=!? (skip check)] #t2.{pro::BuilderInfo::hasRequiredFields} = false;
} =>#t2;
constructor _() → self::BarKeep
@@ -108,7 +108,7 @@
}
class HasKeep extends pro::GeneratedMessage {
[@vm.inferred-type.metadata=protobuf::BuilderInfo?] static final field pro::BuilderInfo _i = let final pro::BuilderInfo #t3 = new pro::BuilderInfo::•(#C1 ?{core::String} "" : "HasKeep") in block {
- [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t3.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t3.{pro::BuilderInfo::add}<Null>(0, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
[@vm.direct-call.metadata=protobuf::BuilderInfo.hasRequiredFields] [@vm.inferred-type.metadata=!? (skip check)] #t3.{pro::BuilderInfo::hasRequiredFields} = false;
} =>#t3;
constructor _() → self::HasKeep
@@ -122,7 +122,7 @@
}
class ClearKeep extends pro::GeneratedMessage {
[@vm.inferred-type.metadata=protobuf::BuilderInfo?] static final field pro::BuilderInfo _i = let final pro::BuilderInfo #t4 = new pro::BuilderInfo::•(#C1 ?{core::String} "" : "ClearKeep") in block {
- [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t4.{pro::BuilderInfo::add}<Null>(0, null, null, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
+ [@vm.direct-call.metadata=protobuf::BuilderInfo.add] [@vm.inferred-type.metadata=!? (skip check)] #t4.{pro::BuilderInfo::add}<Null>(0, null, null, null, null){(core::int, core::String, core::int?, dynamic, () →? pro::GeneratedMessage, (core::int) →? pro::ProtobufEnum?, core::List<pro::ProtobufEnum>?, {protoName: core::String?}) → void};
[@vm.direct-call.metadata=protobuf::BuilderInfo.hasRequiredFields] [@vm.inferred-type.metadata=!? (skip check)] #t4.{pro::BuilderInfo::hasRequiredFields} = false;
} =>#t4;
constructor _() → self::ClearKeep
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/regress_41452_nnbd_strong.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/regress_41452_nnbd_strong.dart.expect
index 69b1559..ce3bd09 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/regress_41452_nnbd_strong.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/regress_41452_nnbd_strong.dart.expect
@@ -17,7 +17,7 @@
synthetic constructor •() → self::_SplayTree<self::_SplayTree::Node>
: super core::Object::•()
;
-[@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4] method add(covariant-by-class self::_SplayTree::Node n) → dynamic {
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4] method add([@vm.inferred-type.metadata=#lib::_SplayTreeMapNode<dynamic>] covariant-by-class self::_SplayTree::Node n) → dynamic {
self::_SplayTree::Node? root = [@vm.direct-call.metadata=#lib::SplayTreeMap._root] [@vm.inferred-type.metadata=#lib::_SplayTreeMapNode<dynamic>] this.{self::_SplayTree::_root}{self::_SplayTree::Node?};
;
core::print([@vm.direct-call.metadata=#lib::_SplayTreeNode.left] [@vm.inferred-type.metadata=dart.core::Null? (value: null)] root{self::_SplayTree::Node}.{self::_SplayTreeNode::left}{self::_SplayTree::Node?});
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/regress_flutter16182.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/regress_flutter16182.dart.expect
index fa24c7a..9b6b0d9 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/regress_flutter16182.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/regress_flutter16182.dart.expect
@@ -19,7 +19,7 @@
synthetic constructor •() → self::A1
: super core::Object::•()
;
-[@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6] method call([dynamic a1 = #C1, dynamic a2 = #C1, dynamic a3 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a4 = #C1, [@vm.inferred-type.metadata=#lib::T1?] dynamic a5 = #C1]) → void {
+[@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6] method call([dynamic a1 = #C1, dynamic a2 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a3 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a4 = #C1, [@vm.inferred-type.metadata=#lib::T1?] dynamic a5 = #C1]) → void {
[@vm.direct-call.metadata=#lib::A1.foo] [@vm.inferred-type.metadata=!? (skip check)] this.{self::A1::foo} = _in::unsafeCast<self::T1?>(a5);
}
}
@@ -42,7 +42,7 @@
synthetic constructor •() → self::A2
: super core::Object::•()
;
-[@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:13,getterSelectorId:14] method call([dynamic a1 = #C1, dynamic a2 = #C1, dynamic a3 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a4 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a5 = #C1, [@vm.inferred-type.metadata=#lib::T2?] dynamic a6 = #C1]) → void {
+[@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:13,getterSelectorId:14] method call([dynamic a1 = #C1, dynamic a2 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a3 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a4 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a5 = #C1, [@vm.inferred-type.metadata=#lib::T2?] dynamic a6 = #C1]) → void {
[@vm.direct-call.metadata=#lib::A2.foo] [@vm.inferred-type.metadata=!? (skip check)] this.{self::A2::foo} = a6;
}
}
@@ -75,7 +75,7 @@
synthetic constructor •() → self::A3
: super core::Object::•()
;
-[@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:24,getterSelectorId:25] method call([dynamic a1 = #C1, dynamic a2 = #C1, dynamic a3 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a4 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a5 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a6 = #C1, [@vm.inferred-type.metadata=#lib::T3?] dynamic a7 = #C1]) → void {
+[@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:24,getterSelectorId:25] method call([dynamic a1 = #C1, dynamic a2 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a3 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a4 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a5 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a6 = #C1, [@vm.inferred-type.metadata=#lib::T3?] dynamic a7 = #C1]) → void {
[@vm.direct-call.metadata=#lib::A3.foo] [@vm.inferred-type.metadata=!? (skip check)] this.{self::A3::foo} = a7;
}
}
@@ -98,7 +98,7 @@
synthetic constructor •() → self::A4
: super core::Object::•()
;
-[@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:32,getterSelectorId:33] method call([dynamic a1 = #C1, dynamic a2 = #C1, dynamic a3 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a4 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a5 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a6 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a7 = #C1, [@vm.inferred-type.metadata=#lib::T4?] dynamic a8 = #C1]) → void {
+[@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:32,getterSelectorId:33] method call([dynamic a1 = #C1, dynamic a2 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a3 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a4 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a5 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a6 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi?] dynamic a7 = #C1, [@vm.inferred-type.metadata=#lib::T4?] dynamic a8 = #C1]) → void {
[@vm.direct-call.metadata=#lib::A4.foo] [@vm.inferred-type.metadata=!? (skip check)] this.{self::A4::foo} = a8;
}
}
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/tree_shake_enum_from_lib.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/tree_shake_enum_from_lib.dart.expect
index 5a63ba0..512caf3 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/tree_shake_enum_from_lib.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/tree_shake_enum_from_lib.dart.expect
@@ -51,6 +51,6 @@
synthetic constructor •() → self::ConstClass
: super core::Object::•()
;
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3402,getterSelectorId:3403] method method([@vm.inferred-type.metadata=dart.core::Null? (value: null)] self::ConstEnum e) → core::int
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3335,getterSelectorId:3336] method method([@vm.inferred-type.metadata=dart.core::Null? (value: null)] self::ConstEnum e) → core::int
return [@vm.inferred-type.metadata=!] e.{core::_Enum::index}{core::int};
}
diff --git a/sdk/lib/_http/http_impl.dart b/sdk/lib/_http/http_impl.dart
index 312ca7c..b97025a 100644
--- a/sdk/lib/_http/http_impl.dart
+++ b/sdk/lib/_http/http_impl.dart
@@ -2340,7 +2340,7 @@
final SecurityContext? context;
final Set<_HttpClientConnection> _idle = HashSet();
final Set<_HttpClientConnection> _active = HashSet();
- final Set<ConnectionTask> _socketTasks = HashSet();
+ final Set<ConnectionTask<Socket>> _socketTasks = HashSet();
final _pending = ListQueue<void Function()>();
int _connecting = 0;
@@ -2434,14 +2434,14 @@
return currentBadCertificateCallback(certificate, uriHost, uriPort);
}
- Future<ConnectionTask> connectionTask = (isSecure && proxy.isDirect
+ Future<ConnectionTask<Socket>> connectionTask = (isSecure && proxy.isDirect
? SecureSocket.startConnect(host, port,
context: context, onBadCertificate: callback)
: Socket.startConnect(host, port));
_connecting++;
- return connectionTask.then((ConnectionTask task) {
+ return connectionTask.then((ConnectionTask<Socket> task) {
_socketTasks.add(task);
- Future socketFuture = task.socket;
+ Future<Socket> socketFuture = task.socket;
final Duration? connectionTimeout = client.connectionTimeout;
if (connectionTimeout != null) {
socketFuture = socketFuture.timeout(connectionTimeout);
diff --git a/sdk/lib/_internal/vm/bin/platform_patch.dart b/sdk/lib/_internal/vm/bin/platform_patch.dart
index db632d6..fbcd877 100644
--- a/sdk/lib/_internal/vm/bin/platform_patch.dart
+++ b/sdk/lib/_internal/vm/bin/platform_patch.dart
@@ -48,7 +48,7 @@
static String? _packageConfig() => VMLibraryHooks.packageConfigString;
@patch
- static Uri _script() => VMLibraryHooks.platformScript;
+ static Uri _script() => VMLibraryHooks.platformScript!;
// This script singleton is written to by the embedder if applicable.
@pragma("vm:entry-point")
diff --git a/sdk/lib/_internal/vm/lib/convert_patch.dart b/sdk/lib/_internal/vm/lib/convert_patch.dart
index 2885579..5893e26 100644
--- a/sdk/lib/_internal/vm/lib/convert_patch.dart
+++ b/sdk/lib/_internal/vm/lib/convert_patch.dart
@@ -28,12 +28,7 @@
@patch
dynamic _parseJson(
String source, Object? Function(Object? key, Object? value)? reviver) {
- _BuildJsonListener listener;
- if (reviver == null) {
- listener = new _BuildJsonListener();
- } else {
- listener = new _ReviverJsonListener(reviver);
- }
+ _JsonListener listener = new _JsonListener(reviver);
var parser = new _JsonStringParser(listener);
parser.chunk = source;
parser.chunkEnd = source.length;
@@ -88,36 +83,16 @@
// Simple API for JSON parsing.
/**
- * Listener for parsing events from [_ChunkedJsonParser].
- */
-abstract class _JsonListener {
- void handleString(String value) {}
- void handleNumber(num value) {}
- void handleBool(bool value) {}
- void handleNull() {}
- void beginObject() {}
- void propertyName() {}
- void propertyValue() {}
- void endObject() {}
- void beginArray() {}
- void arrayElement() {}
- void endArray() {}
-
- /**
- * Read out the final result of parsing a JSON string.
- *
- * Must only be called when the entire input has been parsed.
- */
- dynamic get result;
-}
-
-/**
- * A [_JsonListener] that builds data objects from the parser events.
+ * A [_JsonListener] builds data objects from the parser events.
*
* This is a simple stack-based object builder. It keeps the most recently
* seen value in a variable, and uses it depending on the following event.
*/
-class _BuildJsonListener extends _JsonListener {
+class _JsonListener {
+ _JsonListener(this.reviver);
+
+ final Object? Function(Object? key, Object? value)? reviver;
+
/**
* Stack used to handle nested containers.
*
@@ -126,12 +101,17 @@
* which is also stored on the stack.
*/
final List<Object?> stack = [];
- /** The current [Map] or [List] being built. */
- dynamic currentContainer;
+
+ /** The current [Map] or [List] being built, or null if not building a
+ * container.
+ */
+ Object? currentContainer;
+
/** The most recently read property key. */
String key = '';
+
/** The most recently read value. */
- dynamic value;
+ Object? value;
/** Pushes the currently active container (and key, if a [Map]). */
void pushContainer() {
@@ -168,12 +148,16 @@
}
void propertyName() {
- key = value;
+ key = value as String;
value = null;
}
void propertyValue() {
- Map map = currentContainer;
+ var map = currentContainer as Map;
+ var reviver = this.reviver;
+ if (reviver != null) {
+ value = reviver(key, value);
+ }
map[key] = value;
key = '';
value = null;
@@ -185,11 +169,16 @@
void beginArray() {
pushContainer();
- currentContainer = [];
+ currentContainer = <dynamic>[];
}
void arrayElement() {
- currentContainer.add(value);
+ var list = currentContainer as List;
+ var reviver = this.reviver;
+ if (reviver != null) {
+ value = reviver(list.length, value);
+ }
+ list.add(value);
value = null;
}
@@ -197,30 +186,19 @@
popContainer();
}
- /** Read out the final result of parsing a JSON string. */
+ /**
+ * Read out the final result of parsing a JSON string.
+ *
+ * Must only be called when the entire input has been parsed.
+ */
dynamic get result {
assert(currentContainer == null);
- return value;
- }
-}
-
-class _ReviverJsonListener extends _BuildJsonListener {
- final Object? Function(Object? key, Object? value) reviver;
- _ReviverJsonListener(this.reviver);
-
- void arrayElement() {
- List list = currentContainer;
- value = reviver(list.length, value);
- super.arrayElement();
- }
-
- void propertyValue() {
- value = reviver(key, value);
- super.propertyValue();
- }
-
- dynamic get result {
- return reviver(null, value);
+ var reviver = this.reviver;
+ if (reviver != null) {
+ return reviver(null, value);
+ } else {
+ return value;
+ }
}
}
@@ -1477,13 +1455,7 @@
static _JsonStringParser _createParser(
Object? Function(Object? key, Object? value)? reviver) {
- _BuildJsonListener listener;
- if (reviver == null) {
- listener = new _BuildJsonListener();
- } else {
- listener = new _ReviverJsonListener(reviver);
- }
- return new _JsonStringParser(listener);
+ return new _JsonStringParser(new _JsonListener(reviver));
}
void addSlice(String chunk, int start, int end, bool isLast) {
@@ -1591,13 +1563,7 @@
static _JsonUtf8Parser _createParser(
Object? Function(Object? key, Object? value)? reviver,
bool allowMalformed) {
- _BuildJsonListener listener;
- if (reviver == null) {
- listener = new _BuildJsonListener();
- } else {
- listener = new _ReviverJsonListener(reviver);
- }
- return new _JsonUtf8Parser(listener, allowMalformed);
+ return new _JsonUtf8Parser(new _JsonListener(reviver), allowMalformed);
}
void addSlice(List<int> chunk, int start, int end, bool isLast) {
diff --git a/sdk/lib/_internal/vm/lib/internal_patch.dart b/sdk/lib/_internal/vm/lib/internal_patch.dart
index 3d7a3cd8f..e0267ab 100644
--- a/sdk/lib/_internal/vm/lib/internal_patch.dart
+++ b/sdk/lib/_internal/vm/lib/internal_patch.dart
@@ -7,6 +7,7 @@
/// used by patches of that library. We plan to change this when we have a
/// shared front end and simply use parts.
+import "dart:async" show Timer;
import "dart:core" hide Symbol;
import "dart:isolate" show SendPort;
@@ -69,36 +70,30 @@
class VMLibraryHooks {
// Example: "dart:isolate _Timer._factory"
- static var timerFactory;
+ static Timer Function(int, void Function(Timer), bool)? timerFactory;
// Example: "dart:io _EventHandler._sendData"
- static var eventHandlerSendData;
+ static late void Function(Object?, SendPort, int) eventHandlerSendData;
// A nullary closure that answers the current clock value in milliseconds.
// Example: "dart:io _EventHandler._timerMillisecondClock"
- static var timerMillisecondClock;
-
- // Implementation of Resource.readAsBytes.
- static var resourceReadAsBytes;
+ static late int Function() timerMillisecondClock;
// Implementation of package root/map provision.
- static var packageRootString;
- static var packageConfigString;
- static var packageConfigUriFuture;
- static var resolvePackageUriFuture;
+ static String? packageRootString;
+ static String? packageConfigString;
+ static Future<Uri?> Function()? packageConfigUriFuture;
+ static Future<Uri?> Function(Uri)? resolvePackageUriFuture;
- static var _computeScriptUri;
- static var _cachedScript;
- static set platformScript(var f) {
- _computeScriptUri = f;
+ static Uri Function()? _computeScriptUri;
+ static Uri? _cachedScript;
+ static set platformScript(Object? f) {
+ _computeScriptUri = f as Uri Function()?;
_cachedScript = null;
}
- static get platformScript {
- if (_cachedScript == null && _computeScriptUri != null) {
- _cachedScript = _computeScriptUri();
- }
- return _cachedScript;
+ static Uri? get platformScript {
+ return _cachedScript ??= _computeScriptUri?.call();
}
}
diff --git a/sdk/lib/_internal/vm/lib/invocation_mirror_patch.dart b/sdk/lib/_internal/vm/lib/invocation_mirror_patch.dart
index ae387bf..6c75bc2 100644
--- a/sdk/lib/_internal/vm/lib/invocation_mirror_patch.dart
+++ b/sdk/lib/_internal/vm/lib/invocation_mirror_patch.dart
@@ -40,8 +40,8 @@
// Internal representation of the invocation mirror.
String? _functionName;
- List? _argumentsDescriptor;
- List? _arguments;
+ List<Object?>? _argumentsDescriptor;
+ List<Object?>? _arguments;
bool _isSuperInvocation = false;
int _delayedTypeArgumentsLen = 0;
@@ -49,8 +49,8 @@
Symbol? _memberName;
int _type = _UNINITIALIZED;
List<Type>? _typeArguments;
- List? _positionalArguments;
- Map<Symbol, dynamic>? _namedArguments;
+ List<Object?>? _positionalArguments;
+ Map<Symbol, Object?>? _namedArguments;
_InvocationMirror._withType(this._memberName, int? type, this._typeArguments,
this._positionalArguments, this._namedArguments)
@@ -87,7 +87,7 @@
}
int get _typeArgsLen {
- int typeArgsLen = _argumentsDescriptor![_TYPE_ARGS_LEN];
+ var typeArgsLen = _argumentsDescriptor![_TYPE_ARGS_LEN] as int;
return typeArgsLen == 0 ? _delayedTypeArgumentsLen : typeArgsLen;
}
@@ -113,12 +113,13 @@
if (_positionalArguments == null) {
// The argument descriptor counts the receiver, but not the type arguments
// as positional arguments.
- int numPositionalArguments = _argumentsDescriptor![_POSITIONAL_COUNT] - 1;
+ var numPositionalArguments =
+ (_argumentsDescriptor![_POSITIONAL_COUNT] as int) - 1;
if (numPositionalArguments == 0) {
return _positionalArguments = const [];
}
// Exclude receiver and type args in the returned list.
- int receiverIndex = _typeArgsLen > 0 ? 1 : 0;
+ var receiverIndex = _typeArgsLen > 0 ? 1 : 0;
var args = _arguments!;
_positionalArguments = new _ImmutableList._from(
args, receiverIndex + 1, numPositionalArguments);
@@ -129,18 +130,20 @@
Map<Symbol, dynamic> get namedArguments {
if (_namedArguments == null) {
final argsDescriptor = _argumentsDescriptor!;
- int numArguments = argsDescriptor[_COUNT] - 1; // Exclude receiver.
- int numPositionalArguments = argsDescriptor[_POSITIONAL_COUNT] - 1;
- int numNamedArguments = numArguments - numPositionalArguments;
+ var numArguments =
+ (argsDescriptor[_COUNT] as int) - 1; // Exclude receiver.
+ var numPositionalArguments =
+ (argsDescriptor[_POSITIONAL_COUNT] as int) - 1;
+ var numNamedArguments = numArguments - numPositionalArguments;
if (numNamedArguments == 0) {
return _namedArguments = const {};
}
- int receiverIndex = _typeArgsLen > 0 ? 1 : 0;
- final namedArguments = new Map<Symbol, dynamic>();
- for (int i = 0; i < numNamedArguments; i++) {
- int namedEntryIndex = _FIRST_NAMED_ENTRY + 2 * i;
- int pos = argsDescriptor[namedEntryIndex + 1];
- String arg_name = argsDescriptor[namedEntryIndex];
+ var receiverIndex = _typeArgsLen > 0 ? 1 : 0;
+ final namedArguments = new Map<Symbol, Object?>();
+ for (var i = 0; i < numNamedArguments; i++) {
+ var namedEntryIndex = _FIRST_NAMED_ENTRY + 2 * i;
+ var pos = argsDescriptor[namedEntryIndex + 1] as int;
+ var arg_name = argsDescriptor[namedEntryIndex] as String;
var arg_value = _arguments![receiverIndex + pos];
namedArguments[new internal.Symbol.unvalidated(arg_name)] = arg_value;
}
diff --git a/sdk/lib/_internal/vm/lib/timer_impl.dart b/sdk/lib/_internal/vm/lib/timer_impl.dart
index 32f43d0..1f27731 100644
--- a/sdk/lib/_internal/vm/lib/timer_impl.dart
+++ b/sdk/lib/_internal/vm/lib/timer_impl.dart
@@ -29,8 +29,9 @@
if (_used == _list.length) {
_resize();
}
- timer._indexOrNext = _used++;
- _list[timer._indexOrNext] = timer;
+ var index = _used++;
+ timer._indexOrNext = index;
+ _list[index] = timer;
_bubbleUp(timer);
}
@@ -49,8 +50,9 @@
}
var last = _list[_used];
if (!identical(last, timer)) {
- last._indexOrNext = timer._indexOrNext;
- _list[last._indexOrNext] = last;
+ var index = timer._indexOrNext as int;
+ last._indexOrNext = index;
+ _list[index] = last;
if (last._compareTo(timer) < 0) {
_bubbleUp(last);
} else {
@@ -81,8 +83,8 @@
void _bubbleDown(_Timer timer) {
while (true) {
- int leftIndex = _leftChildIndex(timer._indexOrNext);
- int rightIndex = _rightChildIndex(timer._indexOrNext);
+ var leftIndex = _leftChildIndex(timer._indexOrNext as int);
+ var rightIndex = _rightChildIndex(timer._indexOrNext as int);
_Timer newest = timer;
if (leftIndex < _used && _list[leftIndex]._compareTo(newest) < 0) {
newest = _list[leftIndex];
@@ -99,14 +101,16 @@
}
void _swap(_Timer first, _Timer second) {
- int tmp = first._indexOrNext;
- first._indexOrNext = second._indexOrNext;
- second._indexOrNext = tmp;
- _list[first._indexOrNext] = first;
- _list[second._indexOrNext] = second;
+ var newFirstIndex = second._indexOrNext as int;
+ var newSecondIndex = first._indexOrNext as int;
+ first._indexOrNext = newFirstIndex;
+ second._indexOrNext = newSecondIndex;
+ _list[newFirstIndex] = first;
+ _list[newSecondIndex] = second;
}
- _Timer _parent(_Timer timer) => _list[_parentIndex(timer._indexOrNext)];
+ _Timer _parent(_Timer timer) =>
+ _list[_parentIndex(timer._indexOrNext as int)];
static int _parentIndex(int index) => (index - 1) ~/ 2;
static int _leftChildIndex(int index) => 2 * index + 1;
@@ -136,18 +140,19 @@
static const _ID_MASK = 0x1fffffff;
static int _idCount = 0;
- static RawReceivePort? _receivePort;
+ static _RawReceivePortImpl? _receivePort;
static SendPort? _sendPort;
static bool _receivePortActive = false;
static int _scheduledWakeupTime = 0;
static bool _handlingCallbacks = false;
- Function? _callback; // Closure to call when timer fires. null if canceled.
+ void Function(Timer)?
+ _callback; // Closure to call when timer fires. null if canceled.
int _wakeupTime; // Expiration time.
final int _milliSeconds; // Duration specified at creation.
final bool _repeating; // Indicates periodic timers.
- var _indexOrNext; // Index if part of the TimerHeap, link otherwise.
+ Object? _indexOrNext; // Index if part of the TimerHeap, link otherwise.
int _id; // Incrementing id to enable sorting of timers with same expiry.
int _tick = 0; // Backing for [tick],
@@ -271,20 +276,20 @@
// Handle the notification of a zero timer. Make sure to also execute non-zero
// timers with a lower expiration time.
- static List _queueFromZeroEvent() {
- var pendingTimers = <dynamic>[];
+ static List<_Timer> _queueFromZeroEvent() {
+ var pendingTimers = <_Timer>[];
final firstTimer = _firstZeroTimer;
if (firstTimer != null) {
// Collect pending timers from the timer heap that have an expiration prior
// to the currently notified zero timer.
- var timer;
+ _Timer timer;
while (!_heap.isEmpty && (_heap.first._compareTo(firstTimer) < 0)) {
timer = _heap.removeFirst();
pendingTimers.add(timer);
}
// Append the first zero timer to the pending timers.
- timer = _firstZeroTimer;
- _firstZeroTimer = timer._indexOrNext;
+ timer = firstTimer;
+ _firstZeroTimer = timer._indexOrNext as _Timer?;
timer._indexOrNext = null;
pendingTimers.add(timer);
}
@@ -321,8 +326,8 @@
}
}
- static List _queueFromTimeoutEvent() {
- var pendingTimers = [];
+ static List<_Timer> _queueFromTimeoutEvent() {
+ var pendingTimers = <_Timer>[];
final firstTimer = _firstZeroTimer;
if (firstTimer != null) {
// Collect pending timers from the timer heap that have an expiration
@@ -331,25 +336,23 @@
// current time, meaning all timers which are "less than" the first zero
// timer are expired. The first zero timer will be dispatched when its
// corresponding message is delivered.
- var timer;
while (!_heap.isEmpty && (_heap.first._compareTo(firstTimer) < 0)) {
- timer = _heap.removeFirst();
+ var timer = _heap.removeFirst();
pendingTimers.add(timer);
}
} else {
// Collect pending timers from the timer heap which have expired at this
// time.
var currentTime = VMLibraryHooks.timerMillisecondClock();
- var timer;
while (!_heap.isEmpty && (_heap.first._wakeupTime <= currentTime)) {
- timer = _heap.removeFirst();
+ var timer = _heap.removeFirst();
pendingTimers.add(timer);
}
}
return pendingTimers;
}
- static void _runTimers(List pendingTimers) {
+ static void _runTimers(List<_Timer> pendingTimers) {
// If there are no pending timers currently reset the id space before we
// have a chance to enqueue new timers.
if (_heap.isEmpty && (_firstZeroTimer == null)) {
@@ -375,8 +378,8 @@
// One of the timers in the pending_timers list can cancel
// one of the later timers which will set the callback to
// null. Or the pending zero timer has been canceled earlier.
- if (timer._callback != null) {
- var callback = timer._callback;
+ var callback = timer._callback;
+ if (callback != null) {
if (!timer._repeating) {
// Mark timer as inactive.
timer._callback = null;
@@ -414,7 +417,7 @@
}
static void _handleMessage(msg) {
- var pendingTimers;
+ List<_Timer> pendingTimers;
if (msg == _ZERO_EVENT) {
pendingTimers = _queueFromZeroEvent();
assert(pendingTimers.length > 0);
@@ -434,14 +437,14 @@
if (!_receivePortActive) {
_createTimerHandler();
}
- VMLibraryHooks.eventHandlerSendData(null, _sendPort, wakeupTime);
+ VMLibraryHooks.eventHandlerSendData(null, _sendPort!, wakeupTime);
_scheduledWakeupTime = wakeupTime;
}
// Cancel pending wakeups in the event handler.
static void _cancelWakeup() {
if (_sendPort != null) {
- VMLibraryHooks.eventHandlerSendData(null, _sendPort, _NO_TIMER);
+ VMLibraryHooks.eventHandlerSendData(null, _sendPort!, _NO_TIMER);
_scheduledWakeupTime = 0;
}
}
@@ -449,22 +452,23 @@
// Create a receive port and register a message handler for the timer
// events.
static void _createTimerHandler() {
- if (_receivePort == null) {
- assert(_receivePort == null);
+ var receivePort = _receivePort;
+ if (receivePort == null) {
assert(_sendPort == null);
- final port = RawReceivePort(_handleMessage, 'Timer');
- _receivePort = port;
+ final port = _RawReceivePortImpl('Timer');
+ port.handler = _handleMessage;
_sendPort = port.sendPort;
+ _receivePort = port;
_scheduledWakeupTime = 0;
} else {
- (_receivePort as _RawReceivePortImpl)._setActive(true);
+ receivePort._setActive(true);
}
_receivePortActive = true;
}
static void _shutdownTimerHandler() {
_scheduledWakeupTime = 0;
- (_receivePort as _RawReceivePortImpl)._setActive(false);
+ _receivePort!._setActive(false);
_receivePortActive = false;
}