diff --git a/pkg/vm/bin/dump_kernel.dart b/pkg/vm/bin/dump_kernel.dart index d41077f8cd1..7b131c88545 100644 --- a/pkg/vm/bin/dump_kernel.dart +++ b/pkg/vm/bin/dump_kernel.dart @@ -10,7 +10,7 @@ import 'package:kernel/binary/ast_from_binary.dart' import 'package:vm/metadata/direct_call.dart' show DirectCallMetadataRepository; import 'package:vm/metadata/inferred_type.dart' - show InferredTypeMetadataRepository; + show InferredTypeMetadataRepository, InferredArgTypeMetadataRepository; import 'package:vm/metadata/procedure_attributes.dart' show ProcedureAttributesMetadataRepository; import 'package:vm/metadata/table_selector.dart' @@ -43,6 +43,7 @@ main(List arguments) async { // Register VM-specific metadata. component.addMetadataRepository(new DirectCallMetadataRepository()); component.addMetadataRepository(new InferredTypeMetadataRepository()); + component.addMetadataRepository(new InferredArgTypeMetadataRepository()); component.addMetadataRepository(new ProcedureAttributesMetadataRepository()); component.addMetadataRepository(new TableSelectorMetadataRepository()); component.addMetadataRepository(new UnboxingInfoMetadataRepository()); diff --git a/pkg/vm/lib/metadata/inferred_type.dart b/pkg/vm/lib/metadata/inferred_type.dart index 4c02c83ad78..5cb000382cb 100644 --- a/pkg/vm/lib/metadata/inferred_type.dart +++ b/pkg/vm/lib/metadata/inferred_type.dart @@ -136,3 +136,11 @@ class InferredTypeMetadataRepository extends MetadataRepository { concreteClassReference, constantValue, flags, null); } } + +/// Repository for incoming argument [InferredType]. +class InferredArgTypeMetadataRepository extends InferredTypeMetadataRepository { + static const String repositoryTag = 'vm.inferred-arg-type.metadata'; + + @override + String get tag => repositoryTag; +} diff --git a/pkg/vm/lib/transformations/type_flow/transformer.dart b/pkg/vm/lib/transformations/type_flow/transformer.dart index 39a0a4cadba..6658b8189dc 100644 --- a/pkg/vm/lib/transformations/type_flow/transformer.dart +++ b/pkg/vm/lib/transformations/type_flow/transformer.dart @@ -304,6 +304,7 @@ class AnnotateKernel extends RecursiveVisitor { final FieldMorpher fieldMorpher; final DirectCallMetadataRepository _directCallMetadataRepository; final InferredTypeMetadataRepository _inferredTypeMetadata; + final InferredArgTypeMetadataRepository _inferredArgTypeMetadata; final UnreachableNodeMetadataRepository _unreachableNodeMetadata; final ProcedureAttributesMetadataRepository _procedureAttributesMetadata; final TableSelectorMetadataRepository _tableSelectorMetadata; @@ -318,14 +319,15 @@ class AnnotateKernel extends RecursiveVisitor { : _directCallMetadataRepository = component.metadata[DirectCallMetadataRepository.repositoryTag] as DirectCallMetadataRepository, - _inferredTypeMetadata = new InferredTypeMetadataRepository(), - _unreachableNodeMetadata = new UnreachableNodeMetadataRepository(), - _procedureAttributesMetadata = - new ProcedureAttributesMetadataRepository(), - _tableSelectorMetadata = new TableSelectorMetadataRepository(), - _unboxingInfoMetadata = new UnboxingInfoMetadataRepository(), + _inferredTypeMetadata = InferredTypeMetadataRepository(), + _inferredArgTypeMetadata = InferredArgTypeMetadataRepository(), + _unreachableNodeMetadata = UnreachableNodeMetadataRepository(), + _procedureAttributesMetadata = ProcedureAttributesMetadataRepository(), + _tableSelectorMetadata = TableSelectorMetadataRepository(), + _unboxingInfoMetadata = UnboxingInfoMetadataRepository(), _intClass = _typeFlowAnalysis.environment.coreTypes.intClass { component.addMetadataRepository(_inferredTypeMetadata); + component.addMetadataRepository(_inferredArgTypeMetadata); component.addMetadataRepository(_unreachableNodeMetadata); component.addMetadataRepository(_procedureAttributesMetadata); component.addMetadataRepository(_tableSelectorMetadata); @@ -397,6 +399,13 @@ class AnnotateKernel extends RecursiveVisitor { } } + void _setInferredArgType(TreeNode node, Type type, {bool skipCheck = false}) { + final inferredType = _convertType(type, skipCheck: skipCheck); + if (inferredType != null) { + _inferredArgTypeMetadata.mapping[node] = inferredType; + } + } + void _setUnreachable(TreeNode node) { _unreachableNodeMetadata.mapping[node] = const UnreachableNode(); } @@ -484,7 +493,7 @@ class AnnotateKernel extends RecursiveVisitor { firstParamIndex + positionalParams.length); for (int i = 0; i < positionalParams.length; i++) { - _setInferredType( + _setInferredArgType( positionalParams[i], argTypes.values[firstParamIndex + i], skipCheck: uncheckedParameters!.contains(positionalParams[i])); } @@ -494,7 +503,7 @@ class AnnotateKernel extends RecursiveVisitor { final names = argTypes.names; for (int i = 0; i < names.length; i++) { final param = findNamedParameter(member.function!, names[i])!; - _setInferredType(param, + _setInferredArgType(param, argTypes.values[firstParamIndex + positionalParams.length + i], skipCheck: uncheckedParameters!.contains(param)); } diff --git a/pkg/vm/testcases/transformations/ffi/abi_specific_int.dart.aot.expect b/pkg/vm/testcases/transformations/ffi/abi_specific_int.dart.aot.expect index efd7eda0972..d4f1e3410cd 100644 --- a/pkg/vm/testcases/transformations/ffi/abi_specific_int.dart.aot.expect +++ b/pkg/vm/testcases/transformations/ffi/abi_specific_int.dart.aot.expect @@ -15,12 +15,12 @@ abstract final class WChar extends ffi::AbiSpecificInteger /*hasConstConstructor } @#C18 final class WCharStruct extends ffi::Struct { - constructor #fromTypedDataBase([@vm.inferred-type.metadata=dart.ffi::Pointer] synthesized core::Object #typedDataBase) → self::WCharStruct + constructor #fromTypedDataBase([@vm.inferred-arg-type.metadata=dart.ffi::Pointer] synthesized core::Object #typedDataBase) → self::WCharStruct : super ffi::Struct::_fromTypedDataBase(#typedDataBase) ; [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] [@vm.unboxing-info.metadata=()->i] get a0() → core::int return [@vm.inferred-type.metadata=int] ffi::_loadAbiSpecificInt([@vm.direct-call.metadata=dart.ffi::_Compound._typedDataBase] [@vm.inferred-type.metadata=dart.ffi::Pointer] this.{ffi::_Compound::_typedDataBase}{core::Object}, #C20.{core::List::[]}(ffi::_abi()){(core::int) → core::int*}); -[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] [@vm.unboxing-info.metadata=(i)->i] set a0([@vm.inferred-type.metadata=dart.core::_Smi] core::int #externalFieldValue) → void +[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] [@vm.unboxing-info.metadata=(i)->i] set a0([@vm.inferred-arg-type.metadata=dart.core::_Smi] core::int #externalFieldValue) → void return [@vm.inferred-type.metadata=int] ffi::_storeAbiSpecificInt([@vm.direct-call.metadata=dart.ffi::_Compound._typedDataBase] [@vm.inferred-type.metadata=dart.ffi::Pointer] this.{ffi::_Compound::_typedDataBase}{core::Object}, #C20.{core::List::[]}(ffi::_abi()){(core::int) → core::int*}, #externalFieldValue); [@vm.unboxing-info.metadata=()->i] @#C10 static get #sizeOf() → core::int* @@ -28,7 +28,7 @@ final class WCharStruct extends ffi::Struct { } @#C27 final class WCharArrayStruct extends ffi::Struct { - constructor #fromTypedDataBase([@vm.inferred-type.metadata=dart.ffi::Pointer] synthesized core::Object #typedDataBase) → self::WCharArrayStruct + constructor #fromTypedDataBase([@vm.inferred-arg-type.metadata=dart.ffi::Pointer] synthesized core::Object #typedDataBase) → self::WCharArrayStruct : super ffi::Struct::_fromTypedDataBase(#typedDataBase) ; [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:3] get a0() → ffi::Array diff --git a/pkg/vm/testcases/transformations/ffi/abi_specific_int_incomplete.dart.aot.expect b/pkg/vm/testcases/transformations/ffi/abi_specific_int_incomplete.dart.aot.expect index ca8b790776d..119bbb661d9 100644 --- a/pkg/vm/testcases/transformations/ffi/abi_specific_int_incomplete.dart.aot.expect +++ b/pkg/vm/testcases/transformations/ffi/abi_specific_int_incomplete.dart.aot.expect @@ -15,12 +15,12 @@ abstract final class Incomplete extends ffi::AbiSpecificInteger /*hasConstConstr } @#C15 final class IncompleteStruct extends ffi::Struct { - constructor #fromTypedDataBase([@vm.inferred-type.metadata=dart.ffi::Pointer] synthesized core::Object #typedDataBase) → self::IncompleteStruct + constructor #fromTypedDataBase([@vm.inferred-arg-type.metadata=dart.ffi::Pointer] synthesized core::Object #typedDataBase) → self::IncompleteStruct : super ffi::Struct::_fromTypedDataBase(#typedDataBase) ; [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] [@vm.unboxing-info.metadata=()->i] get a0() → core::int return [@vm.inferred-type.metadata=int] ffi::_loadAbiSpecificInt([@vm.direct-call.metadata=dart.ffi::_Compound._typedDataBase] [@vm.inferred-type.metadata=dart.ffi::Pointer] this.{ffi::_Compound::_typedDataBase}{core::Object}, #C17.{core::List::[]}(ffi::_abi()){(core::int) → core::int*}); -[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] [@vm.unboxing-info.metadata=(i)->i] set a0([@vm.inferred-type.metadata=dart.core::_Smi] core::int #externalFieldValue) → void +[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] [@vm.unboxing-info.metadata=(i)->i] set a0([@vm.inferred-arg-type.metadata=dart.core::_Smi] core::int #externalFieldValue) → void return [@vm.inferred-type.metadata=int] ffi::_storeAbiSpecificInt([@vm.direct-call.metadata=dart.ffi::_Compound._typedDataBase] [@vm.inferred-type.metadata=dart.ffi::Pointer] this.{ffi::_Compound::_typedDataBase}{core::Object}, #C17.{core::List::[]}(ffi::_abi()){(core::int) → core::int*}, #externalFieldValue); [@vm.unboxing-info.metadata=()->i] @#C8 static get #sizeOf() → core::int* @@ -28,7 +28,7 @@ final class IncompleteStruct extends ffi::Struct { } @#C24 final class IncompleteArrayStruct extends ffi::Struct { - constructor #fromTypedDataBase([@vm.inferred-type.metadata=dart.ffi::Pointer] synthesized core::Object #typedDataBase) → self::IncompleteArrayStruct + constructor #fromTypedDataBase([@vm.inferred-arg-type.metadata=dart.ffi::Pointer] synthesized core::Object #typedDataBase) → self::IncompleteArrayStruct : super ffi::Struct::_fromTypedDataBase(#typedDataBase) ; [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:3] get a0() → ffi::Array diff --git a/pkg/vm/testcases/transformations/ffi/ffinative.dart.aot.expect b/pkg/vm/testcases/transformations/ffi/ffinative.dart.aot.expect index 0116752d23e..8b1daa8331f 100644 --- a/pkg/vm/testcases/transformations/ffi/ffinative.dart.aot.expect +++ b/pkg/vm/testcases/transformations/ffi/ffinative.dart.aot.expect @@ -41,16 +41,16 @@ class NativeClassy extends nat::NativeFieldWrapperClass1 { } =>#t3; [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4] method goodHasReceiverHandle() → void return self::NativeClassy::_goodHasReceiverHandle$Method$FfiNative$Ptr(this, #C7){(self::NativeClassy, core::int) → void}; -[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6] method goodHasReceiverHandleAndPtr([@vm.inferred-type.metadata=#lib::NativeClassy] self::NativeClassy v) → void +[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6] method goodHasReceiverHandleAndPtr([@vm.inferred-arg-type.metadata=#lib::NativeClassy] self::NativeClassy v) → void return block { final self::NativeClassy #t4 = this; final nat::NativeFieldWrapperClass1 #t5 = v; final void #t6 = self::NativeClassy::_goodHasReceiverHandleAndPtr$Method$FfiNative$Ptr(#t4, ffi::_fromAddress([@vm.inferred-type.metadata=int] nat::_getNativeField(#t5))){(self::NativeClassy, ffi::Pointer) → void}; _in::reachabilityFence(#t5); } =>#t6; -[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:7,getterSelectorId:8] method goodHasReceiverHandleAndHandle([@vm.inferred-type.metadata=#lib::NativeClassy] self::NativeClassy v) → void +[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:7,getterSelectorId:8] method goodHasReceiverHandleAndHandle([@vm.inferred-arg-type.metadata=#lib::NativeClassy] self::NativeClassy v) → void return self::NativeClassy::_goodHasReceiverHandleAndHandle$Method$FfiNative$Ptr(this, v){(self::NativeClassy, self::NativeClassy) → void}; -[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:9,getterSelectorId:10] method goodHasReceiverPtrAndHandle([@vm.inferred-type.metadata=#lib::NativeClassy] self::NativeClassy v) → void +[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:9,getterSelectorId:10] method goodHasReceiverPtrAndHandle([@vm.inferred-arg-type.metadata=#lib::NativeClassy] self::NativeClassy v) → void return block { final nat::NativeFieldWrapperClass1 #t7 = this; final self::NativeClassy #t8 = v; @@ -100,7 +100,7 @@ class NativeClassy extends nat::NativeFieldWrapperClass1 { } =>#pointerAddress)){(ffi::Pointer) → core::bool}; _in::reachabilityFence(#t15); } =>#t16; -[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:15,getterSelectorId:16] set myField([@vm.inferred-type.metadata=dart.core::bool] core::bool value) → void +[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:15,getterSelectorId:16] set myField([@vm.inferred-arg-type.metadata=dart.core::bool] core::bool value) → void return block { final nat::NativeFieldWrapperClass1 #t17 = this; final core::bool #t18 = value; diff --git a/pkg/vm/testcases/transformations/ffi/finalizable_async.dart.aot.expect b/pkg/vm/testcases/transformations/ffi/finalizable_async.dart.aot.expect index 26490e5a006..a78c0afca77 100644 --- a/pkg/vm/testcases/transformations/ffi/finalizable_async.dart.aot.expect +++ b/pkg/vm/testcases/transformations/ffi/finalizable_async.dart.aot.expect @@ -14,7 +14,7 @@ class MyFinalizable extends core::Object implements ffi::Finalizable { } static method doSomething() → asy::Future async /* futureValueType= core::int */ return 3; -static method useFinalizableAsync([@vm.inferred-type.metadata=#lib::MyFinalizable] ffi::Finalizable finalizable) → asy::Future async /* futureValueType= core::int */ { +static method useFinalizableAsync([@vm.inferred-arg-type.metadata=#lib::MyFinalizable] ffi::Finalizable finalizable) → asy::Future async /* futureValueType= core::int */ { await block { final synthesized asy::Future :expressionValueWrappedFinalizable = asy::Future::sync(() → core::int => 6); _in::reachabilityFence(finalizable); diff --git a/pkg/vm/testcases/transformations/ffi/finalizable_async_star.dart.aot.expect b/pkg/vm/testcases/transformations/ffi/finalizable_async_star.dart.aot.expect index 5b1e07a02ab..0e782edad78 100644 --- a/pkg/vm/testcases/transformations/ffi/finalizable_async_star.dart.aot.expect +++ b/pkg/vm/testcases/transformations/ffi/finalizable_async_star.dart.aot.expect @@ -14,7 +14,7 @@ class MyFinalizable extends core::Object implements ffi::Finalizable { } [@vm.unboxing-info.metadata=()->i]static method doSomething() → core::int return 3; -static method useFinalizableAsyncStar([@vm.inferred-type.metadata=#lib::MyFinalizable] ffi::Finalizable finalizable) → asy::Stream async* { +static method useFinalizableAsyncStar([@vm.inferred-arg-type.metadata=#lib::MyFinalizable] ffi::Finalizable finalizable) → asy::Stream async* { final self::MyFinalizable finalizable2 = new self::MyFinalizable::•(); yield block { final synthesized core::int :expressionValueWrappedFinalizable = self::doSomething(); diff --git a/pkg/vm/testcases/transformations/ffi/finalizable_extension_method.dart.aot.expect b/pkg/vm/testcases/transformations/ffi/finalizable_extension_method.dart.aot.expect index 5a3c525c229..4848819828c 100644 --- a/pkg/vm/testcases/transformations/ffi/finalizable_extension_method.dart.aot.expect +++ b/pkg/vm/testcases/transformations/ffi/finalizable_extension_method.dart.aot.expect @@ -23,14 +23,14 @@ static method main() → void { let final core::Object #t1 = new core::Object::•() in self::_extension#1|baz(foo); _in::reachabilityFence(foo); } -[@vm.unboxing-info.metadata=(b)->i]static extension-member method _extension#0|bar([@vm.inferred-type.metadata=#lib::Foo] lowered final ffi::Finalizable #this) → core::int { +[@vm.unboxing-info.metadata=(b)->i]static extension-member method _extension#0|bar([@vm.inferred-arg-type.metadata=#lib::Foo] lowered final ffi::Finalizable #this) → core::int { core::print("123"); return block { final synthesized core::int :expressionValueWrappedFinalizable = 4; _in::reachabilityFence(#this); } =>:expressionValueWrappedFinalizable; } -[@vm.unboxing-info.metadata=(b)->i]static extension-member method _extension#1|baz([@vm.inferred-type.metadata=#lib::Foo] self::Foo foo) → core::int { +[@vm.unboxing-info.metadata=(b)->i]static extension-member method _extension#1|baz([@vm.inferred-arg-type.metadata=#lib::Foo] self::Foo foo) → core::int { core::print("456"); return block { final synthesized core::int :expressionValueWrappedFinalizable = 5; diff --git a/pkg/vm/testcases/transformations/ffi/finalizable_member.dart.aot.expect b/pkg/vm/testcases/transformations/ffi/finalizable_member.dart.aot.expect index 04a42e0622d..6fd4242ceee 100644 --- a/pkg/vm/testcases/transformations/ffi/finalizable_member.dart.aot.expect +++ b/pkg/vm/testcases/transformations/ffi/finalizable_member.dart.aot.expect @@ -18,7 +18,7 @@ class A extends core::Object implements ffi::Finalizable { } class B extends core::Object implements ffi::Finalizable { [@vm.inferred-type.metadata=#lib::A] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:1] final field self::A a; - constructor •([@vm.inferred-type.metadata=#lib::A] self::A a) → self::B + constructor •([@vm.inferred-arg-type.metadata=#lib::A] self::A a) → self::B : self::B::a = a, super core::Object::•() { ; _in::reachabilityFence(this); diff --git a/pkg/vm/testcases/transformations/ffi/finalizable_sync.dart.aot.expect b/pkg/vm/testcases/transformations/ffi/finalizable_sync.dart.aot.expect index 2e640c15b71..aeff7727e8d 100644 --- a/pkg/vm/testcases/transformations/ffi/finalizable_sync.dart.aot.expect +++ b/pkg/vm/testcases/transformations/ffi/finalizable_sync.dart.aot.expect @@ -13,7 +13,7 @@ class MyFinalizable extends core::Object implements ffi::Finalizable { } [@vm.unboxing-info.metadata=()->i]static method doSomething() → core::int return 3; -[@vm.unboxing-info.metadata=(b)->i]static method useFinalizableSync([@vm.inferred-type.metadata=#lib::MyFinalizable] ffi::Finalizable finalizable) → core::int { +[@vm.unboxing-info.metadata=(b)->i]static method useFinalizableSync([@vm.inferred-arg-type.metadata=#lib::MyFinalizable] ffi::Finalizable finalizable) → core::int { return block { final synthesized core::int :expressionValueWrappedFinalizable = [@vm.inferred-type.metadata=dart.core::_Smi (value: 3)] self::doSomething(); _in::reachabilityFence(finalizable); diff --git a/pkg/vm/testcases/transformations/ffi/finalizable_sync_star.dart.aot.expect b/pkg/vm/testcases/transformations/ffi/finalizable_sync_star.dart.aot.expect index b1abcdbf823..dadb7fa2466 100644 --- a/pkg/vm/testcases/transformations/ffi/finalizable_sync_star.dart.aot.expect +++ b/pkg/vm/testcases/transformations/ffi/finalizable_sync_star.dart.aot.expect @@ -13,7 +13,7 @@ class MyFinalizable extends core::Object implements ffi::Finalizable { } [@vm.unboxing-info.metadata=()->i]static method doSomething() → core::int return 3; -static method useFinalizableSyncStar([@vm.inferred-type.metadata=#lib::MyFinalizable] ffi::Finalizable finalizable) → core::Iterable sync* { +static method useFinalizableSyncStar([@vm.inferred-arg-type.metadata=#lib::MyFinalizable] ffi::Finalizable finalizable) → core::Iterable sync* { yield block { final synthesized core::int :expressionValueWrappedFinalizable = self::doSomething(); _in::reachabilityFence(finalizable); diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/bench_is_prime.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/bench_is_prime.dart.expect index 7c6feae2815..92d460f1229 100644 --- a/pkg/vm/testcases/transformations/type_flow/transformer/bench_is_prime.dart.expect +++ b/pkg/vm/testcases/transformations/type_flow/transformer/bench_is_prime.dart.expect @@ -3,7 +3,7 @@ import self as self; import "dart:core" as core; import "dart:_internal" as _in; -[@vm.unboxing-info.metadata=(i)->b]static method isPrime([@vm.inferred-type.metadata=int] dynamic n) → core::bool { +[@vm.unboxing-info.metadata=(i)->b]static method isPrime([@vm.inferred-arg-type.metadata=int] dynamic n) → core::bool { if(_in::unsafeCast([@vm.direct-call.metadata=dart.core::_IntegerImplementation.<] [@vm.inferred-type.metadata=dart.core::bool] n{dynamic}.<(2))) return false; for (core::int i = 2; [@vm.direct-call.metadata=dart.core::_IntegerImplementation.<=] [@vm.inferred-type.metadata=dart.core::bool (skip check)] [@vm.direct-call.metadata=dart.core::_IntegerImplementation.*] [@vm.inferred-type.metadata=int (skip check)] i.{core::num::*}(i){(core::num) → core::int}.{core::num::<=}(_in::unsafeCast(n)){(core::num) → core::bool}; i = [@vm.direct-call.metadata=dart.core::_IntegerImplementation.+] [@vm.inferred-type.metadata=int (skip check)] i.{core::num::+}(1){(core::num) → core::int}) { diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/bench_vector.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/bench_vector.dart.expect index 5446f567600..60f58e43df1 100644 --- a/pkg/vm/testcases/transformations/type_flow/transformer/bench_vector.dart.expect +++ b/pkg/vm/testcases/transformations/type_flow/transformer/bench_vector.dart.expect @@ -12,9 +12,9 @@ class _Vector extends core::Object { constructor •() → self::_Vector : self::_Vector::_offset = 0, self::_Vector::_length = #C1, self::_Vector::_elements = [@vm.inferred-type.metadata=dart.typed_data::_Float64List] typ::Float64List::•(#C1), super core::Object::•() ; -[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasTearOffUses:false,methodOrSetterSelectorId:4] [@vm.unboxing-info.metadata=(i)->d] operator []([@vm.inferred-type.metadata=int] core::int i) → core::double +[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasTearOffUses:false,methodOrSetterSelectorId:4] [@vm.unboxing-info.metadata=(i)->d] operator []([@vm.inferred-arg-type.metadata=int] core::int i) → core::double return [@vm.direct-call.metadata=dart.typed_data::_Float64List.[]] [@vm.inferred-type.metadata=dart.core::_Double (skip check)] [@vm.direct-call.metadata=#lib::_Vector._elements] [@vm.inferred-type.metadata=dart.typed_data::_Float64List] this.{self::_Vector::_elements}{core::List}.{core::List::[]}([@vm.direct-call.metadata=dart.core::_IntegerImplementation.+] [@vm.inferred-type.metadata=int (skip check)] i.{core::num::+}([@vm.direct-call.metadata=#lib::_Vector._offset] [@vm.inferred-type.metadata=dart.core::_Smi (value: 0)] this.{self::_Vector::_offset}{core::int}){(core::num) → core::int}){(core::int) → core::double}; -[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5] [@vm.unboxing-info.metadata=(b)->d] operator *([@vm.inferred-type.metadata=#lib::_Vector] self::_Vector a) → core::double { +[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5] [@vm.unboxing-info.metadata=(b)->d] operator *([@vm.inferred-arg-type.metadata=#lib::_Vector] self::_Vector a) → core::double { core::double result = 0.0; for (core::int i = 0; [@vm.direct-call.metadata=dart.core::_IntegerImplementation.<] [@vm.inferred-type.metadata=dart.core::bool (skip check)] i.{core::num::<}([@vm.direct-call.metadata=#lib::_Vector._length] [@vm.inferred-type.metadata=dart.core::_Smi (value: 10)] this.{self::_Vector::_length}{core::int}){(core::num) → core::bool}; i = [@vm.direct-call.metadata=dart.core::_IntegerImplementation.+] [@vm.inferred-type.metadata=int (skip check)] i.{core::num::+}(1){(core::num) → core::int}) result = [@vm.direct-call.metadata=dart.core::_Double.+] [@vm.inferred-type.metadata=dart.core::_Double (skip check)] result.{core::double::+}([@vm.direct-call.metadata=dart.core::_Double.*] [@vm.inferred-type.metadata=dart.core::_Double (skip check)] [@vm.direct-call.metadata=#lib::_Vector.[]] [@vm.inferred-type.metadata=dart.core::_Double (skip check)] this.{self::_Vector::[]}(i){(core::int) → core::double}.{core::double::*}([@vm.direct-call.metadata=#lib::_Vector.[]] [@vm.inferred-type.metadata=dart.core::_Double (skip check)] a.{self::_Vector::[]}(i){(core::int) → core::double}){(core::num) → core::double}){(core::num) → core::double}; diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/class_generics_basic.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/class_generics_basic.dart.expect index ebe7d7f1740..8945fd8118d 100644 --- a/pkg/vm/testcases/transformations/type_flow/transformer/class_generics_basic.dart.expect +++ b/pkg/vm/testcases/transformations/type_flow/transformer/class_generics_basic.dart.expect @@ -8,9 +8,9 @@ class C extends core::Object { ; [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] method foo() → dynamic return new self::D::•(); -[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4] method id1([@vm.inferred-type.metadata=#lib::Y (skip check)] covariant-by-class self::C::T% x) → dynamic +[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4] method id1([@vm.inferred-arg-type.metadata=#lib::Y (skip check)] covariant-by-class self::C::T% x) → dynamic return x; -[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6] method id2([@vm.inferred-type.metadata=#lib::Z] covariant-by-class self::C::T% x) → dynamic +[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6] method id2([@vm.inferred-arg-type.metadata=#lib::Z] covariant-by-class self::C::T% x) → dynamic return x; } class D extends core::Object { @@ -57,9 +57,9 @@ class C2 extends core::Object { synthetic constructor •() → self::C2 : super core::Object::•() ; -[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:11,getterSelectorId:12] [@vm.unboxing-info.metadata=(d)->d] method id3([@vm.inferred-type.metadata=dart.core::_Double (skip check) (value: 3.0)] covariant-by-class core::Comparable x) → dynamic +[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:11,getterSelectorId:12] [@vm.unboxing-info.metadata=(d)->d] method id3([@vm.inferred-arg-type.metadata=dart.core::_Double (skip check) (value: 3.0)] covariant-by-class core::Comparable x) → dynamic return x; -[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:13,getterSelectorId:14] method id4([@vm.inferred-type.metadata=#lib::K<#lib::J> (skip check)] covariant-by-class self::K> x) → dynamic +[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:13,getterSelectorId:14] method id4([@vm.inferred-arg-type.metadata=#lib::K<#lib::J> (skip check)] covariant-by-class self::K> x) → dynamic return x; } static method main() → dynamic { diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/class_generics_case1.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/class_generics_case1.dart.expect index 87d147c00fc..c693cedef4a 100644 --- a/pkg/vm/testcases/transformations/type_flow/transformer/class_generics_case1.dart.expect +++ b/pkg/vm/testcases/transformations/type_flow/transformer/class_generics_case1.dart.expect @@ -14,7 +14,7 @@ class InheritedElement extends self::Element { synthetic constructor •() → self::InheritedElement : self::InheritedElement::_dependents = {}, super self::Element::•() ; -[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:2,getterSelectorId:3] method setDependencies([@vm.inferred-type.metadata=!] self::Element dependent, [@vm.inferred-type.metadata=dart.core::_Smi?] core::Object? value) → void { +[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:2,getterSelectorId:3] method setDependencies([@vm.inferred-arg-type.metadata=!] self::Element dependent, [@vm.inferred-arg-type.metadata=dart.core::_Smi?] core::Object? value) → void { [@vm.call-site-attributes.metadata=receiverType:dart.core::Map<#lib::Element, dart.core::Object?>] [@vm.direct-call.metadata=dart.collection::__Map&_HashVMBase&MapMixin&_HashBase&_OperatorEqualsAndHashCode&_LinkedHashMapMixin.[]=] [@vm.inferred-type.metadata=!? (skip check)] [@vm.direct-call.metadata=#lib::InheritedElement._dependents] [@vm.inferred-type.metadata=dart.collection::_Map<#lib::Element, dart.core::Object?>] this.{self::InheritedElement::_dependents}{core::Map}.{core::Map::[]=}(dependent, value){(self::Element, core::Object?) → void}; } } diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/const_prop.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/const_prop.dart.expect index 9c931646b65..8f62bf4607c 100644 --- a/pkg/vm/testcases/transformations/type_flow/transformer/const_prop.dart.expect +++ b/pkg/vm/testcases/transformations/type_flow/transformer/const_prop.dart.expect @@ -30,7 +30,7 @@ static method testDouble() → void { core::print(#C4); core::print([@vm.inferred-type.metadata=dart.core::_Double (value: 100.0)] self::getD); } -static method testStrings([@vm.inferred-type.metadata=#lib::A] self::A a0) → void { +static method testStrings([@vm.inferred-arg-type.metadata=#lib::A] self::A a0) → void { core::print([@vm.direct-call.metadata=#lib::A.foo] [@vm.inferred-type.metadata=dart.core::_OneByteString (value: "foo")] a0.{self::A::foo}{core::String}); core::print([@vm.direct-call.metadata=#lib::A.getBar] [@vm.inferred-type.metadata=dart.core::_OneByteString (skip check) (value: "bar")] a0.{self::A::getBar}(){() → core::String}); core::print(#C5); diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/devirt.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/devirt.dart.expect index 92e08171bc1..f671e595a58 100644 --- a/pkg/vm/testcases/transformations/type_flow/transformer/devirt.dart.expect +++ b/pkg/vm/testcases/transformations/type_flow/transformer/devirt.dart.expect @@ -36,22 +36,22 @@ class E extends core::Object { } [@vm.inferred-type.metadata=#lib::D]late static field self::A dd; [@vm.inferred-type.metadata=#lib::E]static field self::E ee = new self::E::•(); -static method callerA1([@vm.inferred-type.metadata=!] self::A aa) → void { +static method callerA1([@vm.inferred-arg-type.metadata=!] self::A aa) → void { [@vm.inferred-type.metadata=!? (skip check)] aa.{self::A::foo}(){() → core::int}; } -static method callerA2([@vm.inferred-type.metadata=#lib::B] self::A aa) → void { +static method callerA2([@vm.inferred-arg-type.metadata=#lib::B] self::A aa) → void { [@vm.direct-call.metadata=#lib::B.foo] [@vm.inferred-type.metadata=!? (skip check)] aa.{self::A::foo}(){() → core::int}; } -static method callerA3([@vm.inferred-type.metadata=#lib::C] self::A aa) → void { +static method callerA3([@vm.inferred-arg-type.metadata=#lib::C] self::A aa) → void { [@vm.direct-call.metadata=#lib::C.foo] [@vm.inferred-type.metadata=!? (skip check)] aa.{self::A::foo}(){() → core::int}; } -static method callerA4([@vm.inferred-type.metadata=#lib::D] self::A aa) → void { +static method callerA4([@vm.inferred-arg-type.metadata=#lib::D] self::A aa) → void { [@vm.direct-call.metadata=#lib::C.foo] [@vm.inferred-type.metadata=!? (skip check)] aa.{self::A::foo}(){() → core::int}; } static method callerE1() → void { [@vm.direct-call.metadata=dart.core::_StringBase.toString] [@vm.inferred-type.metadata=!? (skip check) (receiver not int)] #C1.{core::Object::toString}(){() → core::String}; } -static method callerE2([@vm.inferred-type.metadata=#lib::E] dynamic x) → void { +static method callerE2([@vm.inferred-arg-type.metadata=#lib::E] dynamic x) → void { [@vm.direct-call.metadata=#lib::E.toString] [@vm.inferred-type.metadata=!? (skip check) (receiver not int)] x.{core::Object::toString}(){() → core::String}; } static method main(core::List args) → dynamic { diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/ffi_struct_constructors.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/ffi_struct_constructors.dart.expect index 08f507da4ba..595ed8d68cc 100644 --- a/pkg/vm/testcases/transformations/type_flow/transformer/ffi_struct_constructors.dart.expect +++ b/pkg/vm/testcases/transformations/type_flow/transformer/ffi_struct_constructors.dart.expect @@ -9,19 +9,19 @@ import "dart:ffi"; @#C6 final class Struct1 extends ffi::Struct { - constructor #fromTypedDataBase([@vm.inferred-type.metadata=dart.typed_data::_Uint8List] synthesized core::Object #typedDataBase) → self::Struct1 + constructor #fromTypedDataBase([@vm.inferred-arg-type.metadata=dart.typed_data::_Uint8List] synthesized core::Object #typedDataBase) → self::Struct1 : super ffi::Struct::_fromTypedDataBase(#typedDataBase) ; } @#C6 final class Struct2 extends ffi::Struct { - constructor #fromTypedDataBase([@vm.inferred-type.metadata=dart.typed_data::_Uint8List] synthesized core::Object #typedDataBase) → self::Struct2 + constructor #fromTypedDataBase([@vm.inferred-arg-type.metadata=dart.typed_data::_Uint8List] synthesized core::Object #typedDataBase) → self::Struct2 : super ffi::Struct::_fromTypedDataBase(#typedDataBase) ; } @#C6 final class Struct3 extends ffi::Struct { - constructor #fromTypedDataBase([@vm.inferred-type.metadata=dart.typed_data::_Uint8List] synthesized core::Object #typedDataBase) → self::Struct3 + constructor #fromTypedDataBase([@vm.inferred-arg-type.metadata=dart.typed_data::_Uint8List] synthesized core::Object #typedDataBase) → self::Struct3 : super ffi::Struct::_fromTypedDataBase(#typedDataBase) ; } @@ -36,7 +36,7 @@ abstract final class Struct7 extends ffi::Struct { } @#C10 final class Struct11 extends ffi::Struct { - constructor #fromTypedDataBase([@vm.inferred-type.metadata=dart.ffi::Pointer] synthesized core::Object #typedDataBase) → self::Struct11 + constructor #fromTypedDataBase([@vm.inferred-arg-type.metadata=dart.ffi::Pointer] synthesized core::Object #typedDataBase) → self::Struct11 : super ffi::Struct::_fromTypedDataBase(#typedDataBase) ; [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:1] get nested() → self::Struct12 @@ -47,7 +47,7 @@ final class Struct11 extends ffi::Struct { } @#C6 final class Struct12 extends ffi::Struct { - constructor #fromTypedDataBase([@vm.inferred-type.metadata=!] synthesized core::Object #typedDataBase) → self::Struct12 + constructor #fromTypedDataBase([@vm.inferred-arg-type.metadata=!] synthesized core::Object #typedDataBase) → self::Struct12 : super ffi::Struct::_fromTypedDataBase(#typedDataBase) ; } diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/future.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/future.dart.expect index 2901bc8dd80..e8cf5d80d02 100644 --- a/pkg/vm/testcases/transformations/type_flow/transformer/future.dart.expect +++ b/pkg/vm/testcases/transformations/type_flow/transformer/future.dart.expect @@ -9,16 +9,16 @@ class C extends core::Object { synthetic constructor •() → self::C : super core::Object::•() ; -[@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] [@vm.unboxing-info.metadata=(i)->b] method test2c([@vm.inferred-type.metadata=dart.core::_Smi (skip check) (value: 3)] covariant-by-class FutureOrx) → void {} -[@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4] method test3c([@vm.inferred-type.metadata=dart.async::_Future (skip check)] covariant-by-class asy::Future x) → void {} -[@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6] method test4c([@vm.inferred-type.metadata=dart.async::_Future (skip check)] covariant-by-class FutureOrx) → void {} -[@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:7,getterSelectorId:8] method test2r([@vm.inferred-type.metadata=#lib::C (skip check)] covariant-by-class self::C> x) → void {} -[@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:9,getterSelectorId:10] method test3r([@vm.inferred-type.metadata=#lib::C> (skip check)] covariant-by-class self::C> x) → void {} -[@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:11,getterSelectorId:12] method test4r([@vm.inferred-type.metadata=#lib::C> (skip check)] covariant-by-class self::C> x) → void {} -[@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:13,getterSelectorId:14] method test5r([@vm.inferred-type.metadata=#lib::C?>] covariant-by-class self::C> x) → void {} -[@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:15,getterSelectorId:16] method test6r([@vm.inferred-type.metadata=#lib::C?> (skip check)] covariant-by-class self::C> x) → void {} -[@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:17,getterSelectorId:18] method test7r([@vm.inferred-type.metadata=#lib::C?>] covariant-by-class self::C x) → void {} -[@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:19,getterSelectorId:20] method test8r([@vm.inferred-type.metadata=#lib::C>] covariant-by-class self::C x) → void {} +[@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] [@vm.unboxing-info.metadata=(i)->b] method test2c([@vm.inferred-arg-type.metadata=dart.core::_Smi (skip check) (value: 3)] covariant-by-class FutureOrx) → void {} +[@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4] method test3c([@vm.inferred-arg-type.metadata=dart.async::_Future (skip check)] covariant-by-class asy::Future x) → void {} +[@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6] method test4c([@vm.inferred-arg-type.metadata=dart.async::_Future (skip check)] covariant-by-class FutureOrx) → void {} +[@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:7,getterSelectorId:8] method test2r([@vm.inferred-arg-type.metadata=#lib::C (skip check)] covariant-by-class self::C> x) → void {} +[@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:9,getterSelectorId:10] method test3r([@vm.inferred-arg-type.metadata=#lib::C> (skip check)] covariant-by-class self::C> x) → void {} +[@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:11,getterSelectorId:12] method test4r([@vm.inferred-arg-type.metadata=#lib::C> (skip check)] covariant-by-class self::C> x) → void {} +[@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:13,getterSelectorId:14] method test5r([@vm.inferred-arg-type.metadata=#lib::C?>] covariant-by-class self::C> x) → void {} +[@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:15,getterSelectorId:16] method test6r([@vm.inferred-arg-type.metadata=#lib::C?> (skip check)] covariant-by-class self::C> x) → void {} +[@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:17,getterSelectorId:18] method test7r([@vm.inferred-arg-type.metadata=#lib::C?>] covariant-by-class self::C x) → void {} +[@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:19,getterSelectorId:20] method test8r([@vm.inferred-arg-type.metadata=#lib::C>] covariant-by-class self::C x) → void {} } static method main() → dynamic { dynamic c = new self::C::•(); diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/future_or.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/future_or.dart.expect index 168f6f08991..be538aca9ef 100644 --- a/pkg/vm/testcases/transformations/type_flow/transformer/future_or.dart.expect +++ b/pkg/vm/testcases/transformations/type_flow/transformer/future_or.dart.expect @@ -20,28 +20,28 @@ static field dynamic usedObject; static method use(dynamic object) → void { self::usedObject == null ?{dynamic} self::usedObject = object : null; } -static method foo1_a1([@vm.inferred-type.metadata=dart.async::_Future<#lib::B>] dynamic x) → void { +static method foo1_a1([@vm.inferred-arg-type.metadata=dart.async::_Future<#lib::B>] dynamic x) → void { self::use(x); } -static method foo1_a2([@vm.inferred-type.metadata=#lib::B] dynamic x) → void { +static method foo1_a2([@vm.inferred-arg-type.metadata=#lib::B] dynamic x) → void { self::use(x); } -static method foo1_a3([@vm.inferred-type.metadata=dart.async::_Future<#lib::B>] dynamic x) → void { +static method foo1_a3([@vm.inferred-arg-type.metadata=dart.async::_Future<#lib::B>] dynamic x) → void { self::use(x); } -static method foo1_a4([@vm.inferred-type.metadata=#lib::B] dynamic x) → void { +static method foo1_a4([@vm.inferred-arg-type.metadata=#lib::B] dynamic x) → void { self::use(x); } -static method foo1([@vm.inferred-type.metadata=dart.async::_Future<#lib::B>] asy::Future a1, [@vm.inferred-type.metadata=#lib::B] self::A a2, [@vm.inferred-type.metadata=dart.async::_Future<#lib::B>] FutureOra3, [@vm.inferred-type.metadata=#lib::B] FutureOra4) → void { +static method foo1([@vm.inferred-arg-type.metadata=dart.async::_Future<#lib::B>] asy::Future a1, [@vm.inferred-arg-type.metadata=#lib::B] self::A a2, [@vm.inferred-arg-type.metadata=dart.async::_Future<#lib::B>] FutureOra3, [@vm.inferred-arg-type.metadata=#lib::B] FutureOra4) → void { self::foo1_a1(a1); self::foo1_a2(a2); self::foo1_a3(a3); self::foo1_a4(a4); } -static method foo2_a1([@vm.inferred-type.metadata=dart.async::_Future?] dynamic x) → void { +static method foo2_a1([@vm.inferred-arg-type.metadata=dart.async::_Future?] dynamic x) → void { self::use(x); } -static method foo2_a2([@vm.inferred-type.metadata=#lib::B?] dynamic x) → void { +static method foo2_a2([@vm.inferred-arg-type.metadata=#lib::B?] dynamic x) → void { self::use(x); } static method foo2_a3(dynamic x) → void { @@ -50,7 +50,7 @@ static method foo2_a3(dynamic x) → void { static method foo2_a4(dynamic x) → void { self::use(x); } -static method foo2([@vm.inferred-type.metadata=dart.async::_Future?] asy::Future? a1, [@vm.inferred-type.metadata=#lib::B?] self::A? a2, FutureOr? a3, FutureOr? a4) → void { +static method foo2([@vm.inferred-arg-type.metadata=dart.async::_Future?] asy::Future? a1, [@vm.inferred-arg-type.metadata=#lib::B?] self::A? a2, FutureOr? a3, FutureOr? a4) → void { self::foo2_a1(a1); self::foo2_a2(a2); self::foo2_a3(a3); diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/inline_class.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/inline_class.dart.expect index c0c5d8df547..b848e608871 100644 --- a/pkg/vm/testcases/transformations/type_flow/transformer/inline_class.dart.expect +++ b/pkg/vm/testcases/transformations/type_flow/transformer/inline_class.dart.expect @@ -17,11 +17,11 @@ extension type IC2(core::int id) { static method bar1 = self::IC2|bar1; constructor • = self::IC2|; } -[@vm.unboxing-info.metadata=(i)->i]static inline-class-member method IC2|([@vm.inferred-type.metadata=int] core::int id) → self::IC2 /* = core::int */ { +[@vm.unboxing-info.metadata=(i)->i]static inline-class-member method IC2|([@vm.inferred-arg-type.metadata=int] core::int id) → self::IC2 /* = core::int */ { lowered final self::IC2 /* = core::int */ #this = id; return #this; } -[@vm.unboxing-info.metadata=(i)->i]static inline-class-member method IC2|foo1([@vm.inferred-type.metadata=dart.core::_Smi (value: 42)] lowered final self::IC2 /* = core::int */ #this) → core::int +[@vm.unboxing-info.metadata=(i)->i]static inline-class-member method IC2|foo1([@vm.inferred-arg-type.metadata=dart.core::_Smi (value: 42)] lowered final self::IC2 /* = core::int */ #this) → core::int return [@vm.direct-call.metadata=dart.core::_IntegerImplementation.+] [@vm.inferred-type.metadata=int (skip check)] _in::unsafeCast(#this).{core::num::+}(1){(core::num) → core::int}; [@vm.unboxing-info.metadata=()->i]static inline-class-member method IC2|bar1() → self::IC2 /* = core::int */ return [@vm.inferred-type.metadata=int] self::IC2|([@vm.direct-call.metadata=dart.core::_IntegerImplementation.+] [@vm.inferred-type.metadata=int (skip check)] _in::unsafeCast(#C1).{core::num::+}(1){(core::num) → core::int}); diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/instance_fields_with_initializers.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/instance_fields_with_initializers.dart.expect index 13cd1e4af6e..860c9c94d08 100644 --- a/pkg/vm/testcases/transformations/type_flow/transformer/instance_fields_with_initializers.dart.expect +++ b/pkg/vm/testcases/transformations/type_flow/transformer/instance_fields_with_initializers.dart.expect @@ -17,7 +17,7 @@ class A extends core::Object { : dynamic #t6 = self::sideEffect(1), dynamic #t7 = [@vm.inferred-type.metadata=dart.core::_Smi (value: 2)] self::sideEffect(2), self::A::f7 = [@vm.inferred-type.metadata=dart.core::_Smi (value: 7)] self::sideEffect(7), dynamic #t8 = self::sideEffect(8), dynamic #t9 = [@vm.inferred-type.metadata=dart.core::_Smi (value: 801)] self::sideEffect(801), super core::Object::•() ; } -[@vm.unboxing-info.metadata=(i)->i]static method sideEffect([@vm.inferred-type.metadata=dart.core::_Smi] core::int x) → core::int { +[@vm.unboxing-info.metadata=(i)->i]static method sideEffect([@vm.inferred-arg-type.metadata=dart.core::_Smi] core::int x) → core::int { core::print(x); return x; } diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_cycle.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_cycle.dart.expect index b414a879f65..7e40f1a52bc 100644 --- a/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_cycle.dart.expect +++ b/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_cycle.dart.expect @@ -46,7 +46,7 @@ class _GeneratedStreamImpl extends self::_StreamImpl { } abstract class StreamView extends self::Stream { [@vm.inferred-type.metadata=!] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:5] final field self::Stream _stream; - constructor •([@vm.inferred-type.metadata=!] self::Stream stream) → self::StreamView + constructor •([@vm.inferred-arg-type.metadata=!] self::Stream stream) → self::StreamView : self::StreamView::_stream = stream, super self::Stream::•() ; [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] method foobar() → self::StreamSubscription { @@ -54,7 +54,7 @@ abstract class StreamView extends self::Stream { } } class ByteStream extends self::StreamView { - constructor •([@vm.inferred-type.metadata=!] self::Stream stream) → self::ByteStream + constructor •([@vm.inferred-arg-type.metadata=!] self::Stream stream) → self::ByteStream : super self::StreamView::•(stream) ; [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:6,getterSelectorId:7] method super_foobar1() → dynamic { diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_field_initializer.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_field_initializer.dart.expect index 76ba07a8d35..77f3feee8ca 100644 --- a/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_field_initializer.dart.expect +++ b/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_field_initializer.dart.expect @@ -52,13 +52,13 @@ class DeepCaller2 extends core::Object { synthetic constructor •() → self::DeepCaller2 : super core::Object::•() ; -[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:13,getterSelectorId:14] method barL1([@vm.inferred-type.metadata=#lib::D] self::D dd) → dynamic +[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:13,getterSelectorId:14] method barL1([@vm.inferred-arg-type.metadata=#lib::D] self::D dd) → dynamic return [@vm.direct-call.metadata=#lib::DeepCaller2.barL2] [@vm.inferred-type.metadata=! (skip check)] this.{self::DeepCaller2::barL2}(dd){(self::D) → dynamic}; -[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:15,getterSelectorId:16] method barL2([@vm.inferred-type.metadata=#lib::D] self::D dd) → dynamic +[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:15,getterSelectorId:16] method barL2([@vm.inferred-arg-type.metadata=#lib::D] self::D dd) → dynamic return [@vm.direct-call.metadata=#lib::DeepCaller2.barL3] [@vm.inferred-type.metadata=! (skip check)] this.{self::DeepCaller2::barL3}(dd){(self::D) → dynamic}; -[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:17,getterSelectorId:18] method barL3([@vm.inferred-type.metadata=#lib::D] self::D dd) → dynamic +[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:17,getterSelectorId:18] method barL3([@vm.inferred-arg-type.metadata=#lib::D] self::D dd) → dynamic return [@vm.direct-call.metadata=#lib::DeepCaller2.barL4] [@vm.inferred-type.metadata=! (skip check)] this.{self::DeepCaller2::barL4}(dd){(self::D) → dynamic}; -[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:19,getterSelectorId:20] method barL4([@vm.inferred-type.metadata=#lib::D] self::D dd) → dynamic +[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:19,getterSelectorId:20] method barL4([@vm.inferred-arg-type.metadata=#lib::D] self::D dd) → dynamic return [@vm.direct-call.metadata=#lib::D.field2] [@vm.inferred-type.metadata=!] dd.{self::D::field2}{core::Object}; } [@vm.inferred-type.metadata=!]late static field core::Function unknown; @@ -69,9 +69,9 @@ static method getValue() → core::Object { self::A aa = self::getDynamic() as{TypeError,ForDynamic} self::A; return [@vm.inferred-type.metadata=!] aa.{self::A::foo}(){() → core::Object}; } -static method use1([@vm.inferred-type.metadata=#lib::DeepCaller1] self::DeepCaller1 x) → dynamic +static method use1([@vm.inferred-arg-type.metadata=#lib::DeepCaller1] self::DeepCaller1 x) → dynamic return [@vm.direct-call.metadata=#lib::DeepCaller1.barL1] [@vm.inferred-type.metadata=! (skip check)] x.{self::DeepCaller1::barL1}(){() → dynamic}; -static method use2([@vm.inferred-type.metadata=#lib::DeepCaller2] self::DeepCaller2 x) → dynamic +static method use2([@vm.inferred-arg-type.metadata=#lib::DeepCaller2] self::DeepCaller2 x) → dynamic return [@vm.direct-call.metadata=#lib::DeepCaller2.barL1] [@vm.inferred-type.metadata=! (skip check)] x.{self::DeepCaller2::barL1}(new self::D::•()){(self::D) → dynamic}; static method createC() → dynamic { new self::C::•(); diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_new_class1.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_new_class1.dart.expect index 91f50d8f412..63f534ee2bf 100644 --- a/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_new_class1.dart.expect +++ b/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_new_class1.dart.expect @@ -24,13 +24,13 @@ class Intermediate extends core::Object { synthetic constructor •() → self::Intermediate : super core::Object::•() ; -[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4] method bar([@vm.inferred-type.metadata=#lib::B] self::A aa) → dynamic +[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4] method bar([@vm.inferred-arg-type.metadata=#lib::B] self::A aa) → dynamic return [@vm.direct-call.metadata=#lib::B.foo] [@vm.inferred-type.metadata=#lib::T1 (skip check)] aa.{self::A::foo}(){() → dynamic}; } [@vm.inferred-type.metadata=!]late static field core::Function unknown; -static method use1([@vm.inferred-type.metadata=#lib::Intermediate] self::Intermediate i, [@vm.inferred-type.metadata=#lib::B] self::A aa) → dynamic +static method use1([@vm.inferred-arg-type.metadata=#lib::Intermediate] self::Intermediate i, [@vm.inferred-arg-type.metadata=#lib::B] self::A aa) → dynamic return [@vm.direct-call.metadata=#lib::Intermediate.bar] [@vm.inferred-type.metadata=#lib::T1 (skip check)] i.{self::Intermediate::bar}(aa){(self::A) → dynamic}; -static method use2([@vm.inferred-type.metadata=#lib::Intermediate] self::Intermediate i, [@vm.inferred-type.metadata=#lib::B] self::A aa) → dynamic +static method use2([@vm.inferred-arg-type.metadata=#lib::Intermediate] self::Intermediate i, [@vm.inferred-arg-type.metadata=#lib::B] self::A aa) → dynamic return [@vm.direct-call.metadata=#lib::Intermediate.bar] [@vm.inferred-type.metadata=#lib::T1 (skip check)] i.{self::Intermediate::bar}(aa){(self::A) → dynamic}; static method getDynamic() → dynamic return self::unknown(); diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_new_class2.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_new_class2.dart.expect index 0c722e4280e..99934baabe7 100644 --- a/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_new_class2.dart.expect +++ b/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_new_class2.dart.expect @@ -48,15 +48,15 @@ class Intermediate extends core::Object { synthetic constructor •() → self::Intermediate : super core::Object::•() ; -[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4] method bar([@vm.inferred-type.metadata=!] self::A aa) → dynamic +[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4] method bar([@vm.inferred-arg-type.metadata=!] self::A aa) → dynamic return [@vm.inferred-type.metadata=!] aa.{self::A::foo}(){() → dynamic}; } [@vm.inferred-type.metadata=!]late static field core::Function unknown; -static method use1([@vm.inferred-type.metadata=#lib::Intermediate] self::Intermediate i, [@vm.inferred-type.metadata=!] self::A aa) → dynamic +static method use1([@vm.inferred-arg-type.metadata=#lib::Intermediate] self::Intermediate i, [@vm.inferred-arg-type.metadata=!] self::A aa) → dynamic return [@vm.direct-call.metadata=#lib::Intermediate.bar] [@vm.inferred-type.metadata=! (skip check)] i.{self::Intermediate::bar}(aa){(self::A) → dynamic}; -static method use2([@vm.inferred-type.metadata=#lib::Intermediate] self::Intermediate i, [@vm.inferred-type.metadata=!] self::A aa) → dynamic +static method use2([@vm.inferred-arg-type.metadata=#lib::Intermediate] self::Intermediate i, [@vm.inferred-arg-type.metadata=!] self::A aa) → dynamic return [@vm.direct-call.metadata=#lib::Intermediate.bar] [@vm.inferred-type.metadata=! (skip check)] i.{self::Intermediate::bar}(aa){(self::A) → dynamic}; -static method use3([@vm.inferred-type.metadata=#lib::Intermediate] self::Intermediate i, [@vm.inferred-type.metadata=!] self::A aa) → dynamic +static method use3([@vm.inferred-arg-type.metadata=#lib::Intermediate] self::Intermediate i, [@vm.inferred-arg-type.metadata=!] self::A aa) → dynamic return [@vm.direct-call.metadata=#lib::Intermediate.bar] [@vm.inferred-type.metadata=! (skip check)] i.{self::Intermediate::bar}(aa){(self::A) → dynamic}; static method getDynamic() → dynamic return self::unknown(); diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_set_field.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_set_field.dart.expect index b61cdc70c4e..cbce7e6f0f7 100644 --- a/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_set_field.dart.expect +++ b/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_set_field.dart.expect @@ -23,36 +23,36 @@ class DeepCaller1 extends core::Object { synthetic constructor •() → self::DeepCaller1 : super core::Object::•() ; -[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6] method barL1([@vm.inferred-type.metadata=#lib::A] self::A aa) → dynamic +[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6] method barL1([@vm.inferred-arg-type.metadata=#lib::A] self::A aa) → dynamic return [@vm.direct-call.metadata=#lib::DeepCaller1.barL2] [@vm.inferred-type.metadata=#lib::T1 (skip check)] this.{self::DeepCaller1::barL2}(aa){(self::A) → dynamic}; -[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:7,getterSelectorId:8] method barL2([@vm.inferred-type.metadata=#lib::A] self::A aa) → dynamic +[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:7,getterSelectorId:8] method barL2([@vm.inferred-arg-type.metadata=#lib::A] self::A aa) → dynamic return [@vm.direct-call.metadata=#lib::DeepCaller1.barL3] [@vm.inferred-type.metadata=#lib::T1 (skip check)] this.{self::DeepCaller1::barL3}(aa){(self::A) → dynamic}; -[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:9,getterSelectorId:10] method barL3([@vm.inferred-type.metadata=#lib::A] self::A aa) → dynamic +[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:9,getterSelectorId:10] method barL3([@vm.inferred-arg-type.metadata=#lib::A] self::A aa) → dynamic return [@vm.direct-call.metadata=#lib::DeepCaller1.barL4] [@vm.inferred-type.metadata=#lib::T1 (skip check)] this.{self::DeepCaller1::barL4}(aa){(self::A) → dynamic}; -[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:11,getterSelectorId:12] method barL4([@vm.inferred-type.metadata=#lib::A] self::A aa) → dynamic +[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:11,getterSelectorId:12] method barL4([@vm.inferred-arg-type.metadata=#lib::A] self::A aa) → dynamic return [@vm.direct-call.metadata=#lib::A.field1] [@vm.inferred-type.metadata=#lib::T1] aa.{self::A::field1}{dynamic}; } class DeepCaller2 extends core::Object { synthetic constructor •() → self::DeepCaller2 : super core::Object::•() ; -[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:13,getterSelectorId:14] method barL1([@vm.inferred-type.metadata=#lib::A] self::A aa) → dynamic +[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:13,getterSelectorId:14] method barL1([@vm.inferred-arg-type.metadata=#lib::A] self::A aa) → dynamic return [@vm.direct-call.metadata=#lib::DeepCaller2.barL2] [@vm.inferred-type.metadata=! (skip check)] this.{self::DeepCaller2::barL2}(aa){(self::A) → dynamic}; -[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:15,getterSelectorId:16] method barL2([@vm.inferred-type.metadata=#lib::A] self::A aa) → dynamic +[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:15,getterSelectorId:16] method barL2([@vm.inferred-arg-type.metadata=#lib::A] self::A aa) → dynamic return [@vm.direct-call.metadata=#lib::DeepCaller2.barL3] [@vm.inferred-type.metadata=! (skip check)] this.{self::DeepCaller2::barL3}(aa){(self::A) → dynamic}; -[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:17,getterSelectorId:18] method barL3([@vm.inferred-type.metadata=#lib::A] self::A aa) → dynamic +[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:17,getterSelectorId:18] method barL3([@vm.inferred-arg-type.metadata=#lib::A] self::A aa) → dynamic return [@vm.direct-call.metadata=#lib::DeepCaller2.barL4] [@vm.inferred-type.metadata=! (skip check)] this.{self::DeepCaller2::barL4}(aa){(self::A) → dynamic}; -[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:19,getterSelectorId:20] method barL4([@vm.inferred-type.metadata=#lib::A] self::A aa) → dynamic +[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:19,getterSelectorId:20] method barL4([@vm.inferred-arg-type.metadata=#lib::A] self::A aa) → dynamic return [@vm.direct-call.metadata=#lib::A.field2] [@vm.inferred-type.metadata=!] aa.{self::A::field2}{dynamic}; } [@vm.inferred-type.metadata=!]late static field core::Function unknown; -static method use1([@vm.inferred-type.metadata=#lib::DeepCaller1] self::DeepCaller1 x, [@vm.inferred-type.metadata=#lib::A] self::A aa) → dynamic +static method use1([@vm.inferred-arg-type.metadata=#lib::DeepCaller1] self::DeepCaller1 x, [@vm.inferred-arg-type.metadata=#lib::A] self::A aa) → dynamic return [@vm.direct-call.metadata=#lib::DeepCaller1.barL1] [@vm.inferred-type.metadata=#lib::T1 (skip check)] x.{self::DeepCaller1::barL1}(aa){(self::A) → dynamic}; -static method use2([@vm.inferred-type.metadata=#lib::DeepCaller2] self::DeepCaller2 x, [@vm.inferred-type.metadata=#lib::A] self::A aa) → dynamic +static method use2([@vm.inferred-arg-type.metadata=#lib::DeepCaller2] self::DeepCaller2 x, [@vm.inferred-arg-type.metadata=#lib::A] self::A aa) → dynamic return [@vm.direct-call.metadata=#lib::DeepCaller2.barL1] [@vm.inferred-type.metadata=! (skip check)] x.{self::DeepCaller2::barL1}(aa){(self::A) → dynamic}; static method getDynamic() → dynamic return self::unknown(); -static method setField2([@vm.inferred-type.metadata=#lib::A] self::A aa, [@vm.inferred-type.metadata=#lib::T2] dynamic value) → void { +static method setField2([@vm.inferred-arg-type.metadata=#lib::A] self::A aa, [@vm.inferred-arg-type.metadata=#lib::T2] dynamic value) → void { [@vm.direct-call.metadata=#lib::A.field2] [@vm.inferred-type.metadata=!? (skip check)] aa.{self::A::field2} = value; } static method main(core::List args) → dynamic { diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_set_field2.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_set_field2.dart.expect index 833cfc17b26..e4da146dcaa 100644 --- a/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_set_field2.dart.expect +++ b/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_set_field2.dart.expect @@ -24,11 +24,11 @@ class T3 extends core::Object { } class Q extends core::Object { [@vm.inferred-type.metadata=!] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:5] final field self::Q::T% result; - constructor •([@vm.inferred-type.metadata=!] self::Q::T% result) → self::Q + constructor •([@vm.inferred-arg-type.metadata=!] self::Q::T% result) → self::Q : self::Q::result = result, super core::Object::•() ; } -static method foo1([@vm.inferred-type.metadata=dart.core::_GrowableList<#lib::T1>] core::List list) → dynamic { +static method foo1([@vm.inferred-arg-type.metadata=dart.core::_GrowableList<#lib::T1>] core::List list) → dynamic { [@vm.direct-call.metadata=#lib::T3.run] [@vm.inferred-type.metadata=!? (skip check)] [@vm.direct-call.metadata=#lib::T1.go] [@vm.inferred-type.metadata=#lib::T3 (skip check)] [@vm.direct-call.metadata=#lib::Q.result] [@vm.inferred-type.metadata=!] [@vm.direct-call.metadata=dart._internal::ListIterable.first] [@vm.inferred-type.metadata=#lib::Q] [@vm.direct-call.metadata=dart.collection::ListBase.map] [@vm.inferred-type.metadata=dart._internal::MappedListIterable<#lib::T1, ?> (skip check)] list.{core::Iterable::map}>((self::T1 t1) → self::Q => new self::Q::•(t1)){((self::T1) → self::Q) → core::Iterable>}.{core::Iterable::first}{self::Q}.{self::Q::result}{self::T1}.{self::T1::go}(){() → self::T3}.{self::T3::run}(){() → dynamic}; } static method foo2NewValue() → self::Q diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_while_processing.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_while_processing.dart.expect index fea5456e06f..b953619a70d 100644 --- a/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_while_processing.dart.expect +++ b/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_while_processing.dart.expect @@ -19,7 +19,7 @@ class T2 extends core::Object implements self::I { } class Point extends core::Object /*hasConstConstructor*/ { [@vm.inferred-type.metadata=!] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:3] final field self::I x; - const constructor •([@vm.inferred-type.metadata=!] self::I x) → self::Point + const constructor •([@vm.inferred-arg-type.metadata=!] self::I x) → self::Point : self::Point::x = x, super core::Object::•() ; [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:4,getterSelectorId:5] method newPoint1() → self::Point @@ -27,7 +27,7 @@ class Point extends core::Object /*hasConstConstructor*/ { [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:6,getterSelectorId:7] method newPoint2() → self::Point return new self::Point::•([@vm.direct-call.metadata=#lib::Point.x] [@vm.inferred-type.metadata=!] this.{self::Point::x}{self::I}); } -static method getX([@vm.inferred-type.metadata=#lib::Point] dynamic point) → dynamic { +static method getX([@vm.inferred-arg-type.metadata=#lib::Point] dynamic point) → dynamic { [@vm.direct-call.metadata=#lib::Point.x] [@vm.inferred-type.metadata=!? (receiver not int)] point{dynamic}.x; } static method main() → dynamic { diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/named_params_shaking_test.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/named_params_shaking_test.dart.expect index 135428cd29d..560ced0b245 100644 --- a/pkg/vm/testcases/transformations/type_flow/transformer/named_params_shaking_test.dart.expect +++ b/pkg/vm/testcases/transformations/type_flow/transformer/named_params_shaking_test.dart.expect @@ -9,7 +9,7 @@ import "dart:math"; import "package:expect/expect.dart"; abstract class TestNamedOrderBase extends core::Object { -[@vm.unboxing-info.metadata=(i,i,i,i)->b] constructor •([@vm.inferred-type.metadata=int] dynamic w, [@vm.inferred-type.metadata=int] core::int? x, [@vm.inferred-type.metadata=int] core::int? y, [@vm.inferred-type.metadata=int] core::int? z) → self::TestNamedOrderBase +[@vm.unboxing-info.metadata=(i,i,i,i)->b] constructor •([@vm.inferred-arg-type.metadata=int] dynamic w, [@vm.inferred-arg-type.metadata=int] core::int? x, [@vm.inferred-arg-type.metadata=int] core::int? y, [@vm.inferred-arg-type.metadata=int] core::int? z) → self::TestNamedOrderBase : super core::Object::•() { self::testNamedOrder(_in::unsafeCast(w), x, y, z); } @@ -26,7 +26,7 @@ class TestNamedOrderSub extends self::TestNamedOrderBase { return self::global = [@vm.direct-call.metadata=dart.core::_IntegerImplementation.+] [@vm.inferred-type.metadata=int (skip check)] [@vm.inferred-type.metadata=int] self::global.{core::num::+}(1){(core::num) → core::int}; [@vm.unboxing-info.metadata=()->i]static method dec() → core::int return self::global = [@vm.inferred-type.metadata=int] math::max(0, self::global = [@vm.direct-call.metadata=dart.core::_IntegerImplementation.-] [@vm.inferred-type.metadata=int (skip check)] [@vm.inferred-type.metadata=int] self::global.{core::num::-}(1){(core::num) → core::int}); -[@vm.unboxing-info.metadata=(i,i,i,i)->b]static method testNamedOrder([@vm.inferred-type.metadata=int] core::int w, [@vm.inferred-type.metadata=int] core::int? x, [@vm.inferred-type.metadata=int] core::int? y, [@vm.inferred-type.metadata=int] core::int? z) → void { +[@vm.unboxing-info.metadata=(i,i,i,i)->b]static method testNamedOrder([@vm.inferred-arg-type.metadata=int] core::int w, [@vm.inferred-arg-type.metadata=int] core::int? x, [@vm.inferred-arg-type.metadata=int] core::int? y, [@vm.inferred-arg-type.metadata=int] core::int? z) → void { exp::Expect::equals(w, 1); exp::Expect::equals(z, 2); exp::Expect::equals(y, 3); 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 56fbf2fb140..5c01f13edae 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 @@ -54,7 +54,7 @@ class B extends self::A { return _in::unsafeCast([@vm.direct-call.metadata=#lib::B.noSuchMethod] [@vm.inferred-type.metadata=#lib::T1 (skip check)] this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView] core::Map::unmodifiable(#C4))){(core::Invocation) → dynamic}); [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:3] no-such-method-forwarder get bar() → dynamic return _in::unsafeCast([@vm.direct-call.metadata=#lib::B.noSuchMethod] [@vm.inferred-type.metadata=#lib::T1 (skip check)] this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 1, #C2, #C3, [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView] core::Map::unmodifiable(#C4))){(core::Invocation) → dynamic}); -[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:4,getterSelectorId:5] [@vm.unboxing-info.metadata=(i,i,i,i)->b] no-such-method-forwarder method bazz([@vm.inferred-type.metadata=dart.core::_Smi (value: 1)] dynamic a1, [@vm.inferred-type.metadata=dart.core::_Smi (value: 2)] dynamic a2, [@vm.inferred-type.metadata=dart.core::_Smi (value: 3)] dynamic a3, [@vm.inferred-type.metadata=dart.core::_Smi (value: 4)] dynamic a4) → dynamic +[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:4,getterSelectorId:5] [@vm.unboxing-info.metadata=(i,i,i,i)->b] no-such-method-forwarder method bazz([@vm.inferred-arg-type.metadata=dart.core::_Smi (value: 1)] dynamic a1, [@vm.inferred-arg-type.metadata=dart.core::_Smi (value: 2)] dynamic a2, [@vm.inferred-arg-type.metadata=dart.core::_Smi (value: 3)] dynamic a3, [@vm.inferred-arg-type.metadata=dart.core::_Smi (value: 4)] dynamic a4) → dynamic return _in::unsafeCast([@vm.direct-call.metadata=#lib::B.noSuchMethod] [@vm.inferred-type.metadata=#lib::T1 (skip check)] this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C2, [@vm.inferred-type.metadata=dart.core::_ImmutableList] core::List::unmodifiable([@vm.inferred-type.metadata=dart.core::_GrowableList] core::_GrowableList::_literal5()), [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView] core::Map::unmodifiable(#C4))){(core::Invocation) → dynamic}); } abstract class C extends core::Object { @@ -73,7 +73,7 @@ class D extends self::C implements self::A { return _in::unsafeCast([@vm.direct-call.metadata=#lib::C.noSuchMethod] [@vm.inferred-type.metadata=#lib::T2 (skip check)] this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView] core::Map::unmodifiable(#C4))){(core::Invocation) → dynamic}); [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:3] no-such-method-forwarder get bar() → dynamic return _in::unsafeCast([@vm.direct-call.metadata=#lib::C.noSuchMethod] [@vm.inferred-type.metadata=#lib::T2 (skip check)] this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 1, #C2, #C3, [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView] core::Map::unmodifiable(#C4))){(core::Invocation) → dynamic}); -[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:4,getterSelectorId:5] [@vm.unboxing-info.metadata=(i,i,i,i)->b] no-such-method-forwarder method bazz([@vm.inferred-type.metadata=dart.core::_Smi (value: 1)] dynamic a1, [@vm.inferred-type.metadata=dart.core::_Smi (value: 2)] dynamic a2, [@vm.inferred-type.metadata=dart.core::_Smi (value: 3)] dynamic a3, [@vm.inferred-type.metadata=dart.core::_Smi (value: 4)] dynamic a4) → dynamic +[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:4,getterSelectorId:5] [@vm.unboxing-info.metadata=(i,i,i,i)->b] no-such-method-forwarder method bazz([@vm.inferred-arg-type.metadata=dart.core::_Smi (value: 1)] dynamic a1, [@vm.inferred-arg-type.metadata=dart.core::_Smi (value: 2)] dynamic a2, [@vm.inferred-arg-type.metadata=dart.core::_Smi (value: 3)] dynamic a3, [@vm.inferred-arg-type.metadata=dart.core::_Smi (value: 4)] dynamic a4) → dynamic return _in::unsafeCast([@vm.direct-call.metadata=#lib::C.noSuchMethod] [@vm.inferred-type.metadata=#lib::T2 (skip check)] this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C2, [@vm.inferred-type.metadata=dart.core::_ImmutableList] core::List::unmodifiable([@vm.inferred-type.metadata=dart.core::_GrowableList] core::_GrowableList::_literal5()), [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView] core::Map::unmodifiable(#C4))){(core::Invocation) → dynamic}); } class E extends core::Object implements self::A { @@ -106,7 +106,7 @@ class H extends core::Object { synthetic constructor •() → self::H : super core::Object::•() ; -[@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:8,getterSelectorId:9] method foo({[@vm.inferred-type.metadata=dart.core::_Smi (value: 1)] dynamic left = #C7, [@vm.inferred-type.metadata=dart.core::_Smi (value: 2)] dynamic right = #C7}) → dynamic +[@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:8,getterSelectorId:9] method foo({[@vm.inferred-arg-type.metadata=dart.core::_Smi (value: 1)] dynamic left = #C7, [@vm.inferred-arg-type.metadata=dart.core::_Smi (value: 2)] dynamic right = #C7}) → dynamic return new self::T6::•(); [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:6,getterSelectorId:7] method noSuchMethod(core::Invocation invocation) → dynamic { return new self::T7::•(); diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/null_check_elimination.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/null_check_elimination.dart.expect index d95c1e4d77d..2b93b7b1468 100644 --- a/pkg/vm/testcases/transformations/type_flow/transformer/null_check_elimination.dart.expect +++ b/pkg/vm/testcases/transformations/type_flow/transformer/null_check_elimination.dart.expect @@ -7,16 +7,16 @@ class A extends core::Object { [@vm.inferred-type.metadata=dart.core::_OneByteString] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] field core::String? nonNullable; [@vm.inferred-type.metadata=dart.core::_OneByteString?] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4] field core::String? nullable; [@vm.inferred-type.metadata=dart.core::Null? (value: null)] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6] field core::String? alwaysNull; - constructor •([@vm.inferred-type.metadata=dart.core::_OneByteString] core::String? nonNullable, [@vm.inferred-type.metadata=dart.core::_OneByteString?] core::String? nullable) → self::A + constructor •([@vm.inferred-arg-type.metadata=dart.core::_OneByteString] core::String? nonNullable, [@vm.inferred-arg-type.metadata=dart.core::_OneByteString?] core::String? nullable) → self::A : self::A::nonNullable = nonNullable, self::A::nullable = nullable, self::A::alwaysNull = #C1, super core::Object::•() ; } [@vm.inferred-type.metadata=#lib::A]static field self::A staticField = new self::A::•("hi", "bye"); -static method testNonNullable([@vm.inferred-type.metadata=#lib::A] self::A a) → dynamic +static method testNonNullable([@vm.inferred-arg-type.metadata=#lib::A] self::A a) → dynamic return _in::unsafeCast([@vm.direct-call.metadata=#lib::A.nonNullable] [@vm.inferred-type.metadata=dart.core::_OneByteString] a.{self::A::nonNullable}{core::String?}); -static method testNullable([@vm.inferred-type.metadata=#lib::A] self::A a) → dynamic +static method testNullable([@vm.inferred-arg-type.metadata=#lib::A] self::A a) → dynamic return [@vm.direct-call.metadata=#lib::A.nullable] [@vm.inferred-type.metadata=dart.core::_OneByteString?] a.{self::A::nullable}{core::String?}!; -static method testAlwaysNull([@vm.inferred-type.metadata=#lib::A] self::A a) → dynamic +static method testAlwaysNull([@vm.inferred-arg-type.metadata=#lib::A] self::A a) → dynamic return [@vm.direct-call.metadata=#lib::A.alwaysNull] [@vm.inferred-type.metadata=dart.core::Null? (value: null)] a.{self::A::alwaysNull}{core::String?}!; static method main() → void { final core::List list = [@vm.inferred-type.metadata=dart.core::_GrowableList<#lib::A>] core::_GrowableList::_literal2(new self::A::•("foo", null), [@vm.inferred-type.metadata=#lib::A] self::staticField); diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/null_test_elimination.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/null_test_elimination.dart.expect index 63dd9600827..86cecfc9d45 100644 --- a/pkg/vm/testcases/transformations/type_flow/transformer/null_test_elimination.dart.expect +++ b/pkg/vm/testcases/transformations/type_flow/transformer/null_test_elimination.dart.expect @@ -7,22 +7,22 @@ class A extends core::Object { [@vm.inferred-type.metadata=dart.core::_OneByteString] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] field core::String? nonNullable; [@vm.inferred-type.metadata=dart.core::_OneByteString?] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4] field core::String? nullable; [@vm.inferred-type.metadata=dart.core::Null? (value: null)] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6] field core::String? alwaysNull; - constructor •([@vm.inferred-type.metadata=dart.core::_OneByteString] core::String? nonNullable, [@vm.inferred-type.metadata=dart.core::_OneByteString?] core::String? nullable) → self::A + constructor •([@vm.inferred-arg-type.metadata=dart.core::_OneByteString] core::String? nonNullable, [@vm.inferred-arg-type.metadata=dart.core::_OneByteString?] core::String? nullable) → self::A : self::A::nonNullable = nonNullable, self::A::nullable = nullable, self::A::alwaysNull = #C1, super core::Object::•() ; } [@vm.inferred-type.metadata=#lib::A]static field self::A staticField = new self::A::•("hi", "bye"); -static method testNonNullableIf1([@vm.inferred-type.metadata=#lib::A] self::A a) → dynamic { +static method testNonNullableIf1([@vm.inferred-arg-type.metadata=#lib::A] self::A a) → dynamic { { [@vm.direct-call.metadata=#lib::A.nonNullable] [@vm.inferred-type.metadata=dart.core::_OneByteString] a.{self::A::nonNullable}{core::String?}; } } -static method testNullableIf1([@vm.inferred-type.metadata=#lib::A] self::A a) → dynamic { +static method testNullableIf1([@vm.inferred-arg-type.metadata=#lib::A] self::A a) → dynamic { if([@vm.direct-call.metadata=#lib::A.nullable] [@vm.inferred-type.metadata=dart.core::_OneByteString?] a.{self::A::nullable}{core::String?} == null) { core::print("null"); } } -static method testAlwaysNullIf1([@vm.inferred-type.metadata=#lib::A] self::A a) → dynamic { +static method testAlwaysNullIf1([@vm.inferred-arg-type.metadata=#lib::A] self::A a) → dynamic { { [@vm.direct-call.metadata=#lib::A.alwaysNull] [@vm.inferred-type.metadata=dart.core::Null? (value: null)] a.{self::A::alwaysNull}{core::String?}; { @@ -30,7 +30,7 @@ static method testAlwaysNullIf1([@vm.inferred-type.metadata=#lib::A] self::A a) } } } -static method testNonNullableIf2([@vm.inferred-type.metadata=#lib::A] self::A a) → dynamic { +static method testNonNullableIf2([@vm.inferred-arg-type.metadata=#lib::A] self::A a) → dynamic { if( block { { [@vm.direct-call.metadata=#lib::A.nonNullable] [@vm.inferred-type.metadata=dart.core::_OneByteString] a.{self::A::nonNullable}{core::String?}; @@ -39,23 +39,23 @@ static method testNonNullableIf2([@vm.inferred-type.metadata=#lib::A] self::A a) core::print("not null"); } } -static method testNullableIf2([@vm.inferred-type.metadata=#lib::A] self::A a) → dynamic { +static method testNullableIf2([@vm.inferred-arg-type.metadata=#lib::A] self::A a) → dynamic { if(!([@vm.direct-call.metadata=#lib::A.nullable] [@vm.inferred-type.metadata=dart.core::_OneByteString?] a.{self::A::nullable}{core::String?} == null) && _in::unsafeCast([@vm.inferred-type.metadata=dart.core::bool] self::someCondition())) { core::print("not null"); } } -static method testAlwaysNullIf2([@vm.inferred-type.metadata=#lib::A] self::A a) → dynamic { +static method testAlwaysNullIf2([@vm.inferred-arg-type.metadata=#lib::A] self::A a) → dynamic { { [@vm.direct-call.metadata=#lib::A.alwaysNull] [@vm.inferred-type.metadata=dart.core::Null? (value: null)] a.{self::A::alwaysNull}{core::String?}; } } -static method testNonNullableCondExpr([@vm.inferred-type.metadata=#lib::A] self::A a) → dynamic +static method testNonNullableCondExpr([@vm.inferred-arg-type.metadata=#lib::A] self::A a) → dynamic return block { [@vm.direct-call.metadata=#lib::A.nonNullable] [@vm.inferred-type.metadata=dart.core::_OneByteString] a.{self::A::nonNullable}{core::String?}; } =>"not null"; -static method testNullableCondExpr([@vm.inferred-type.metadata=#lib::A] self::A a) → dynamic +static method testNullableCondExpr([@vm.inferred-arg-type.metadata=#lib::A] self::A a) → dynamic return !([@vm.direct-call.metadata=#lib::A.nullable] [@vm.inferred-type.metadata=dart.core::_OneByteString?] a.{self::A::nullable}{core::String?} == null) ?{core::String} "not null" : "null"; -static method testAlwaysNullCondExpr([@vm.inferred-type.metadata=#lib::A] self::A a) → dynamic +static method testAlwaysNullCondExpr([@vm.inferred-arg-type.metadata=#lib::A] self::A a) → dynamic return block { [@vm.direct-call.metadata=#lib::A.alwaysNull] [@vm.inferred-type.metadata=dart.core::Null? (value: null)] a.{self::A::alwaysNull}{core::String?}; } =>"null"; diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/null_test_elimination2.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/null_test_elimination2.dart.expect index 06190c57d43..73ea02679a1 100644 --- a/pkg/vm/testcases/transformations/type_flow/transformer/null_test_elimination2.dart.expect +++ b/pkg/vm/testcases/transformations/type_flow/transformer/null_test_elimination2.dart.expect @@ -5,7 +5,7 @@ import "dart:_internal" as _in; static method _defaultCheck([dynamic _ = #C1]) → core::bool return true; -static method testStaticTypeOfConditional([@vm.inferred-type.metadata=dart.core::_Closure] (self::testStaticTypeOfConditional::T%) →? core::bool check) → void { +static method testStaticTypeOfConditional([@vm.inferred-arg-type.metadata=dart.core::_Closure] (self::testStaticTypeOfConditional::T%) →? core::bool check) → void { if(#C2 is self::testStaticTypeOfConditional::T% && (let final (self::testStaticTypeOfConditional::T%) →? core::bool #t1 = check in _in::unsafeCast(#t1{(self::testStaticTypeOfConditional::T%) → core::bool}))(#C2) as{TypeError,ForDynamic} core::bool) { core::print("ok"); } diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/param_types_before_strong_mode_checks.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/param_types_before_strong_mode_checks.dart.expect index 9c870a6ba51..bfd7bb751ae 100644 --- a/pkg/vm/testcases/transformations/type_flow/transformer/param_types_before_strong_mode_checks.dart.expect +++ b/pkg/vm/testcases/transformations/type_flow/transformer/param_types_before_strong_mode_checks.dart.expect @@ -42,7 +42,7 @@ class D extends core::Object { } } [@vm.inferred-type.metadata=!]late static field core::Function unknown; -static method func1([@vm.inferred-type.metadata=#lib::T2] self::T0 t0) → void { +static method func1([@vm.inferred-arg-type.metadata=#lib::T2] self::T0 t0) → void { [@vm.direct-call.metadata=#lib::T2.foo] [@vm.inferred-type.metadata=!? (skip check)] t0.{self::T0::foo}(){() → void}; } static method func2(self::T0 t0) → void { 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 b2e29931052..4b9890c0d6f 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 @@ -68,7 +68,7 @@ class FooKeep extends pro::GeneratedMessage { get barKeep() → self::BarKeep return [@vm.direct-call.metadata=library package:protobuf/protobuf.dart::GeneratedMessage.$_getN] [@vm.inferred-type.metadata=foo.pb.dart::BarKeep (skip check)] this.{pro::GeneratedMessage::$_getN}(){(core::int) → self::BarKeep}; [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:2,getterSelectorId:3] @#C9 - set barKeep([@vm.inferred-type.metadata=foo.pb.dart::BarKeep] self::BarKeep v) → void { + set barKeep([@vm.inferred-arg-type.metadata=foo.pb.dart::BarKeep] self::BarKeep v) → void { [@vm.direct-call.metadata=library package:protobuf/protobuf.dart::GeneratedMessage.setField] [@vm.inferred-type.metadata=!? (skip check)] this.{pro::GeneratedMessage::setField}(v){(core::int, core::Object) → void}; } [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:4] @#C11 @@ -78,7 +78,7 @@ class FooKeep extends pro::GeneratedMessage { get aKeep() → core::int return [@vm.direct-call.metadata=library package:protobuf/protobuf.dart::GeneratedMessage.$_getIZ] [@vm.inferred-type.metadata=int (skip check)] this.{pro::GeneratedMessage::$_getIZ}(4){(core::int) → core::int}; [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6] [@vm.unboxing-info.metadata=(i)->b] @#C13 - set aKeep([@vm.inferred-type.metadata=dart.core::_Smi (value: 43)] core::int v) → void { + set aKeep([@vm.inferred-arg-type.metadata=dart.core::_Smi (value: 43)] core::int v) → void { [@vm.direct-call.metadata=library package:protobuf/protobuf.dart::GeneratedMessage.$_setSignedInt32] [@vm.inferred-type.metadata=!? (skip check)] this.{pro::GeneratedMessage::$_setSignedInt32}(4, v){(core::int, core::int) → void}; } [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:7,getterSelectorId:8] @#C15 @@ -108,7 +108,7 @@ class BarKeep extends pro::GeneratedMessage { get aKeep() → core::int return [@vm.direct-call.metadata=library package:protobuf/protobuf.dart::GeneratedMessage.$_getIZ] [@vm.inferred-type.metadata=int (skip check)] this.{pro::GeneratedMessage::$_getIZ}(0){(core::int) → core::int}; [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:11,getterSelectorId:12] [@vm.unboxing-info.metadata=(i)->b] @#C9 - set aKeep([@vm.inferred-type.metadata=dart.core::_Smi] core::int v) → void { + set aKeep([@vm.inferred-arg-type.metadata=dart.core::_Smi] core::int v) → void { [@vm.direct-call.metadata=library package:protobuf/protobuf.dart::GeneratedMessage.$_setSignedInt32] [@vm.inferred-type.metadata=!? (skip check)] this.{pro::GeneratedMessage::$_setSignedInt32}(0, v){(core::int, core::int) → void}; } } 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 745d8b5db4a..0a36ddc77ea 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 @@ -50,7 +50,7 @@ class FooKeep extends pro::GeneratedMessage { constructor _() → self::FooKeep : super pro::GeneratedMessage::•() ; - static factory fromBuffer([@vm.inferred-type.metadata=dart.core::_GrowableList] core::List i) → self::FooKeep + static factory fromBuffer([@vm.inferred-arg-type.metadata=dart.core::_GrowableList] core::List i) → self::FooKeep return let final self::FooKeep #t4 = [@vm.inferred-type.metadata=foo.pb.dart::FooKeep] self::FooKeep::create() in block { [@vm.direct-call.metadata=library package:protobuf/protobuf.dart::GeneratedMessage.mergeFromBuffer] [@vm.inferred-type.metadata=!? (skip check)] #t4.{pro::GeneratedMessage::mergeFromBuffer}(i){(core::List, [pro::ExtensionRegistry]) → void}; } =>#t4; 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 1a3fb906735..ef90861279b 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 @@ -63,7 +63,7 @@ class FooKeep extends pro::GeneratedMessage { static method create() → self::FooKeep return new self::FooKeep::_(); [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:2] @#C10 - set barKeep([@vm.inferred-type.metadata=foo.pb.dart::BarKeep] self::BarKeep v) → void { + set barKeep([@vm.inferred-arg-type.metadata=foo.pb.dart::BarKeep] self::BarKeep v) → void { [@vm.direct-call.metadata=library package:protobuf/protobuf.dart::GeneratedMessage.setField] [@vm.inferred-type.metadata=!? (skip check)] this.{pro::GeneratedMessage::setField}(1, v){(core::int, core::Object) → void}; } [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:3] @#C12 @@ -73,15 +73,15 @@ class FooKeep extends pro::GeneratedMessage { get mapDrop() → core::Map return [@vm.direct-call.metadata=library package:protobuf/protobuf.dart::GeneratedMessage.$_getMap] [@vm.inferred-type.metadata=! (skip check)] this.{pro::GeneratedMessage::$_getMap}(3){(core::int) → core::Map}; [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5] [@vm.unboxing-info.metadata=(i)->b] @#C16 - set aKeep([@vm.inferred-type.metadata=dart.core::_Smi (value: 43)] core::int v) → void { + set aKeep([@vm.inferred-arg-type.metadata=dart.core::_Smi (value: 43)] core::int v) → void { [@vm.direct-call.metadata=library package:protobuf/protobuf.dart::GeneratedMessage.$_setSignedInt32] [@vm.inferred-type.metadata=!? (skip check)] this.{pro::GeneratedMessage::$_setSignedInt32}(4, v){(core::int, core::int) → void}; } [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:6] @#C18 - set hasKeep([@vm.inferred-type.metadata=foo.pb.dart::HasKeep] self::HasKeep v) → void { + set hasKeep([@vm.inferred-arg-type.metadata=foo.pb.dart::HasKeep] self::HasKeep v) → void { [@vm.direct-call.metadata=library package:protobuf/protobuf.dart::GeneratedMessage.setField] [@vm.inferred-type.metadata=!? (skip check)] this.{pro::GeneratedMessage::setField}(6, v){(core::int, core::Object) → void}; } [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:7] @#C20 - set clearKeep([@vm.inferred-type.metadata=foo.pb.dart::ClearKeep] self::ClearKeep v) → void { + set clearKeep([@vm.inferred-arg-type.metadata=foo.pb.dart::ClearKeep] self::ClearKeep v) → void { [@vm.direct-call.metadata=library package:protobuf/protobuf.dart::GeneratedMessage.setField] [@vm.inferred-type.metadata=!? (skip check)] this.{pro::GeneratedMessage::setField}(7, v){(core::int, core::Object) → void}; } } @@ -102,11 +102,11 @@ class BarKeep extends pro::GeneratedMessage { static method create() → self::BarKeep return new self::BarKeep::_(); [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:8] [@vm.unboxing-info.metadata=(i)->b] @#C10 - set aKeep([@vm.inferred-type.metadata=dart.core::_Smi] core::int v) → void { + set aKeep([@vm.inferred-arg-type.metadata=dart.core::_Smi] core::int v) → void { [@vm.direct-call.metadata=library package:protobuf/protobuf.dart::GeneratedMessage.$_setSignedInt32] [@vm.inferred-type.metadata=!? (skip check)] this.{pro::GeneratedMessage::$_setSignedInt32}(0, v){(core::int, core::int) → void}; } [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:9] [@vm.unboxing-info.metadata=(i)->b] @#C22 - set bDrop([@vm.inferred-type.metadata=dart.core::_Smi (value: 4)] core::int v) → void { + set bDrop([@vm.inferred-arg-type.metadata=dart.core::_Smi (value: 4)] core::int v) → void { [@vm.direct-call.metadata=library package:protobuf/protobuf.dart::GeneratedMessage.$_setSignedInt32] [@vm.inferred-type.metadata=!? (skip check)] this.{pro::GeneratedMessage::$_setSignedInt32}(1, v){(core::int, core::int) → void}; } } @@ -158,7 +158,7 @@ class ZopDrop extends pro::GeneratedMessage { static method create() → self::ZopDrop return new self::ZopDrop::_(); [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:10] [@vm.unboxing-info.metadata=(i)->b] @#C10 - set aDrop([@vm.inferred-type.metadata=dart.core::_Smi (value: 3)] core::int v) → void { + set aDrop([@vm.inferred-arg-type.metadata=dart.core::_Smi (value: 3)] core::int v) → void { [@vm.direct-call.metadata=library package:protobuf/protobuf.dart::GeneratedMessage.$_setSignedInt32] [@vm.inferred-type.metadata=!? (skip check)] this.{pro::GeneratedMessage::$_setSignedInt32}(0, v){(core::int, core::int) → void}; } } 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 619e15030f3..41a14d77a6c 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 @@ -72,7 +72,7 @@ class FooKeep extends pro::GeneratedMessage { get barKeep() → self::BarKeep return [@vm.direct-call.metadata=library package:protobuf/protobuf.dart::GeneratedMessage.$_getN] [@vm.inferred-type.metadata=foo.pb.dart::BarKeep (skip check)] this.{pro::GeneratedMessage::$_getN}(){(core::int) → self::BarKeep}; [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:2,getterSelectorId:3] @#C9 - set barKeep([@vm.inferred-type.metadata=foo.pb.dart::BarKeep] self::BarKeep v) → void { + set barKeep([@vm.inferred-arg-type.metadata=foo.pb.dart::BarKeep] self::BarKeep v) → void { [@vm.direct-call.metadata=library package:protobuf/protobuf.dart::GeneratedMessage.setField] [@vm.inferred-type.metadata=!? (skip check)] this.{pro::GeneratedMessage::setField}(v){(core::int, core::Object) → void}; } [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:4] @#C11 @@ -82,7 +82,7 @@ class FooKeep extends pro::GeneratedMessage { get aKeep() → core::int return [@vm.direct-call.metadata=library package:protobuf/protobuf.dart::GeneratedMessage.$_getIZ] [@vm.inferred-type.metadata=int (skip check)] this.{pro::GeneratedMessage::$_getIZ}(4){(core::int) → core::int}; [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6] [@vm.unboxing-info.metadata=(i)->b] @#C13 - set aKeep([@vm.inferred-type.metadata=dart.core::_Smi (value: 43)] core::int v) → void { + set aKeep([@vm.inferred-arg-type.metadata=dart.core::_Smi (value: 43)] core::int v) → void { [@vm.direct-call.metadata=library package:protobuf/protobuf.dart::GeneratedMessage.$_setSignedInt32] [@vm.inferred-type.metadata=!? (skip check)] this.{pro::GeneratedMessage::$_setSignedInt32}(4, v){(core::int, core::int) → void}; } [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:7,getterSelectorId:8] @#C15 @@ -112,7 +112,7 @@ class BarKeep extends pro::GeneratedMessage { get aKeep() → core::int return [@vm.direct-call.metadata=library package:protobuf/protobuf.dart::GeneratedMessage.$_getIZ] [@vm.inferred-type.metadata=int (skip check)] this.{pro::GeneratedMessage::$_getIZ}(0){(core::int) → core::int}; [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:11,getterSelectorId:12] [@vm.unboxing-info.metadata=(i)->b] @#C9 - set aKeep([@vm.inferred-type.metadata=dart.core::_Smi] core::int v) → void { + set aKeep([@vm.inferred-arg-type.metadata=dart.core::_Smi] core::int v) → void { [@vm.direct-call.metadata=library package:protobuf/protobuf.dart::GeneratedMessage.$_setSignedInt32] [@vm.inferred-type.metadata=!? (skip check)] this.{pro::GeneratedMessage::$_setSignedInt32}(0, v){(core::int, core::int) → void}; } } diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/name_mangling_test.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/name_mangling_test.dart.expect index 8aca7128c5c..c28c3cd4daa 100644 --- a/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/name_mangling_test.dart.expect +++ b/pkg/vm/testcases/transformations/type_flow/transformer/protobuf_handler/lib/name_mangling_test.dart.expect @@ -40,7 +40,7 @@ class NameManglingKeep extends pro::GeneratedMessage { constructor _() → self::NameManglingKeep : super pro::GeneratedMessage::•() ; - static factory fromBuffer([@vm.inferred-type.metadata=dart.core::_GrowableList] core::List i) → self::NameManglingKeep + static factory fromBuffer([@vm.inferred-arg-type.metadata=dart.core::_GrowableList] core::List i) → self::NameManglingKeep return let final self::NameManglingKeep #t4 = [@vm.inferred-type.metadata=name_mangling.pb.dart::NameManglingKeep] self::NameManglingKeep::create() in block { [@vm.direct-call.metadata=library package:protobuf/protobuf.dart::GeneratedMessage.mergeFromBuffer] [@vm.inferred-type.metadata=!? (skip check)] #t4.{pro::GeneratedMessage::mergeFromBuffer}(i){(core::List, [pro::ExtensionRegistry]) → void}; } =>#t4; diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/records.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/records.dart.expect index fde432829ab..3e54ca5589b 100644 --- a/pkg/vm/testcases/transformations/type_flow/transformer/records.dart.expect +++ b/pkg/vm/testcases/transformations/type_flow/transformer/records.dart.expect @@ -5,11 +5,11 @@ import "dart:core" as core; [@vm.inferred-type.metadata=dart.core::_GrowableList?]static field dynamic list = [@vm.inferred-type.metadata=dart.core::_GrowableList] core::_GrowableList::_literal2("abc", (42, {foo42: "foo42"})); static method recordLiteral() → dynamic return (#C1, #C2, {bar: #C3}); -[@vm.unboxing-info.metadata=(b)->i]static method recordFieldAccess1([@vm.inferred-type.metadata=dart.core::_Record](core::int, core::String) rec) → dynamic +[@vm.unboxing-info.metadata=(b)->i]static method recordFieldAccess1([@vm.inferred-arg-type.metadata=dart.core::_Record](core::int, core::String) rec) → dynamic return rec.$1{core::int}; -[@vm.unboxing-info.metadata=(b)->i]static method recordFieldAccess2([@vm.inferred-type.metadata=dart.core::_Record]({required a: core::int, required b: core::String}) rec) → dynamic +[@vm.unboxing-info.metadata=(b)->i]static method recordFieldAccess2([@vm.inferred-arg-type.metadata=dart.core::_Record]({required a: core::int, required b: core::String}) rec) → dynamic return rec.a{core::int}; -static method recordDynamicFieldAccess([@vm.inferred-type.metadata=!] dynamic x) → dynamic +static method recordDynamicFieldAccess([@vm.inferred-arg-type.metadata=!] dynamic x) → dynamic return [@vm.inferred-type.metadata=dart.core::_OneByteString (value: "foo42")] x{dynamic}.foo42; static method main() → dynamic { core::print(#C7); diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/records_dart2wasm.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/records_dart2wasm.dart.expect index a94a1564cdc..30f3f111337 100644 --- a/pkg/vm/testcases/transformations/type_flow/transformer/records_dart2wasm.dart.expect +++ b/pkg/vm/testcases/transformations/type_flow/transformer/records_dart2wasm.dart.expect @@ -3,11 +3,11 @@ import self as self; import "dart:core" as core; [@vm.inferred-type.metadata=dart.core::_GrowableList?]static field dynamic list = ["abc", (42, {foo42: "foo42"})]; -[@vm.unboxing-info.metadata=(i,i,i)->b]static method recordLiteral([@vm.inferred-type.metadata=dart.core::_BoxedInt] dynamic x, [@vm.inferred-type.metadata=dart.core::_BoxedInt] dynamic y, [@vm.inferred-type.metadata=dart.core::_BoxedInt] dynamic z) → dynamic +[@vm.unboxing-info.metadata=(i,i,i)->b]static method recordLiteral([@vm.inferred-arg-type.metadata=dart.core::_BoxedInt] dynamic x, [@vm.inferred-arg-type.metadata=dart.core::_BoxedInt] dynamic y, [@vm.inferred-arg-type.metadata=dart.core::_BoxedInt] dynamic z) → dynamic return (x, y, {bar: z}); -static method recordFieldAccess1([@vm.inferred-type.metadata=dart.core::Record_2](core::int, core::String) rec) → dynamic +static method recordFieldAccess1([@vm.inferred-arg-type.metadata=dart.core::Record_2](core::int, core::String) rec) → dynamic return rec.$1{core::int}; -static method recordFieldAccess2([@vm.inferred-type.metadata=dart.core::Record_0_a_b]({required a: core::int, required b: core::String}) rec) → dynamic +static method recordFieldAccess2([@vm.inferred-arg-type.metadata=dart.core::Record_0_a_b]({required a: core::int, required b: core::String}) rec) → dynamic return rec.a{core::int}; static method recordDynamicFieldAccess(dynamic x) → dynamic return x{dynamic}.foo42; diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/regress_37455.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/regress_37455.dart.expect index 6b45df21c75..fed6b2eb647 100644 --- a/pkg/vm/testcases/transformations/type_flow/transformer/regress_37455.dart.expect +++ b/pkg/vm/testcases/transformations/type_flow/transformer/regress_37455.dart.expect @@ -4,7 +4,7 @@ import "dart:core" as core; class A extends core::Object { [@vm.inferred-type.metadata=!] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:1] final field core::List afield; - constructor •([@vm.inferred-type.metadata=!] core::List afield) → self::A + constructor •([@vm.inferred-arg-type.metadata=!] core::List afield) → self::A : self::A::afield = afield, super core::Object::•() ; [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:2,getterSelectorId:3] method toString() → core::String @@ -14,7 +14,7 @@ class B extends core::Object { synthetic constructor •() → self::B : super core::Object::•() ; -[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasTearOffUses:false,methodOrSetterSelectorId:4,getterSelectorId:5] method _foo([@vm.inferred-type.metadata=dart._internal::ListIterator] core::Iterator iter) → core::List { +[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasTearOffUses:false,methodOrSetterSelectorId:4,getterSelectorId:5] method _foo([@vm.inferred-arg-type.metadata=dart._internal::ListIterator] core::Iterator iter) → core::List { core::List result = [@vm.inferred-type.metadata=dart.core::_GrowableList] core::_GrowableList::•(0); while ([@vm.direct-call.metadata=dart._internal::ListIterator.moveNext] [@vm.inferred-type.metadata=dart.core::bool (skip check)] iter.{core::Iterator::moveNext}(){() → core::bool}) { if([@vm.direct-call.metadata=dart.core::_IntegerImplementation.<] [@vm.inferred-type.metadata=dart.core::bool (skip check)] [@vm.direct-call.metadata=dart._internal::ListIterator.current] [@vm.inferred-type.metadata=int] iter.{core::Iterator::current}{core::int}.{core::num::<}(0){(core::num) → core::bool}) { diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/regress_37719.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/regress_37719.dart.expect index 0f2a17fcfad..39fb054a852 100644 --- a/pkg/vm/testcases/transformations/type_flow/transformer/regress_37719.dart.expect +++ b/pkg/vm/testcases/transformations/type_flow/transformer/regress_37719.dart.expect @@ -2,7 +2,7 @@ library #lib; import self as self; import "dart:core" as core; -[@vm.unboxing-info.metadata=(b)->i]static method foo([@vm.inferred-type.metadata=dart.core::_GrowableList] core::List x) → dynamic +[@vm.unboxing-info.metadata=(b)->i]static method foo([@vm.inferred-arg-type.metadata=dart.core::_GrowableList] core::List x) → dynamic return [@vm.direct-call.metadata=dart.core::_IntegerImplementation.+] [@vm.inferred-type.metadata=int (skip check)] 1.{core::num::+}([@vm.direct-call.metadata=dart.core::_GrowableList.[]] [@vm.inferred-type.metadata=int (skip check)] x.{core::List::[]}(0){(core::int) → core::int}){(core::num) → core::int}; static method main() → dynamic return [@vm.inferred-type.metadata=dart.core::Null? (value: null)] core::print([@vm.inferred-type.metadata=int] self::foo([@vm.inferred-type.metadata=dart.core::_GrowableList] core::_GrowableList::_literal1(1))); diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/regress_41452.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/regress_41452.dart.expect index b14dd44ef4c..6fd1f841fc7 100644 --- a/pkg/vm/testcases/transformations/type_flow/transformer/regress_41452.dart.expect +++ b/pkg/vm/testcases/transformations/type_flow/transformer/regress_41452.dart.expect @@ -17,7 +17,7 @@ abstract class _SplayTree : super core::Object::•() ; -[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4] method add([@vm.inferred-type.metadata=#lib::_SplayTreeMapNode] 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-arg-type.metadata=#lib::_SplayTreeMapNode] 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] 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_42418_1_test.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/regress_42418_1_test.dart.expect index f721f106fcc..b9dcab4896d 100644 --- a/pkg/vm/testcases/transformations/type_flow/transformer/regress_42418_1_test.dart.expect +++ b/pkg/vm/testcases/transformations/type_flow/transformer/regress_42418_1_test.dart.expect @@ -13,7 +13,7 @@ class A extends core::Object { : super core::Object::•() ; [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] @#C3 - method foo([@vm.inferred-type.metadata=int?] core::int? x) → void + method foo([@vm.inferred-arg-type.metadata=int?] core::int? x) → void return [@vm.inferred-type.metadata=dart.core::Null? (value: null)] exp::Expect::isTrue([@vm.direct-call.metadata=dart.core::_IntegerImplementation.isOdd] [@vm.inferred-type.metadata=dart.core::bool] x!.{core::int::isOdd}{core::bool}); } class B extends core::Object { @@ -21,7 +21,7 @@ class B extends core::Object { : super core::Object::•() ; [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] @#C3 - method foo([@vm.inferred-type.metadata=int] core::int? x) → void + method foo([@vm.inferred-arg-type.metadata=int] core::int? x) → void return [@vm.inferred-type.metadata=dart.core::Null? (value: null)] exp::Expect::isTrue([@vm.direct-call.metadata=dart.core::_IntegerImplementation.isOdd] [@vm.inferred-type.metadata=dart.core::bool] _in::unsafeCast(x).{core::int::isOdd}{core::bool}); } class C extends self::A implements self::B { diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/regress_42418_2_test.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/regress_42418_2_test.dart.expect index 50d25c1971a..c86804b5d01 100644 --- a/pkg/vm/testcases/transformations/type_flow/transformer/regress_42418_2_test.dart.expect +++ b/pkg/vm/testcases/transformations/type_flow/transformer/regress_42418_2_test.dart.expect @@ -13,7 +13,7 @@ class A extends core::Object { : super core::Object::•() ; [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] @#C3 - method bar([@vm.inferred-type.metadata=int] core::int? x) → void + method bar([@vm.inferred-arg-type.metadata=int] core::int? x) → void return [@vm.inferred-type.metadata=dart.core::Null? (value: null)] exp::Expect::isTrue([@vm.direct-call.metadata=dart.core::_IntegerImplementation.isOdd] [@vm.inferred-type.metadata=dart.core::bool] _in::unsafeCast(x).{core::int::isOdd}{core::bool}); } class B extends core::Object { @@ -21,7 +21,7 @@ class B extends core::Object { : super core::Object::•() ; [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] @#C3 - method bar([@vm.inferred-type.metadata=int?] core::int? x) → void + method bar([@vm.inferred-arg-type.metadata=int?] core::int? x) → void return [@vm.inferred-type.metadata=dart.core::Null? (value: null)] exp::Expect::isTrue([@vm.direct-call.metadata=dart.core::_IntegerImplementation.isOdd] [@vm.inferred-type.metadata=dart.core::bool] x!.{core::int::isOdd}{core::bool}); } class C extends self::A implements self::B { diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/regress_45324_2.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/regress_45324_2.dart.expect index 822ac32ac8f..9337cc70b9d 100644 --- a/pkg/vm/testcases/transformations/type_flow/transformer/regress_45324_2.dart.expect +++ b/pkg/vm/testcases/transformations/type_flow/transformer/regress_45324_2.dart.expect @@ -6,7 +6,7 @@ class A extends core::Object { synthetic constructor •() → self::A : super core::Object::•() ; -[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] method doTest([@vm.inferred-type.metadata=#lib::X] self::Z a) → void { +[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] method doTest([@vm.inferred-arg-type.metadata=#lib::X] self::Z a) → void { core::print([@vm.direct-call.metadata=#lib::Base.appName] [@vm.inferred-type.metadata=dart.core::_OneByteString (value: "x")] a.{self::Z::appName}{core::String?}); } } diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/regress_50392.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/regress_50392.dart.expect index 75dc6392253..57046f33bcb 100644 --- a/pkg/vm/testcases/transformations/type_flow/transformer/regress_50392.dart.expect +++ b/pkg/vm/testcases/transformations/type_flow/transformer/regress_50392.dart.expect @@ -5,7 +5,7 @@ import "dart:_internal" as _in; class Model extends core::Object { [@vm.inferred-type.metadata=dart.core::_Smi?] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:1] final field self::Model::T? value; - constructor _([@vm.inferred-type.metadata=dart.core::_Smi?] self::Model::T? value) → self::Model + constructor _([@vm.inferred-arg-type.metadata=dart.core::_Smi?] self::Model::T? value) → self::Model : self::Model::value = value, super core::Object::•() ; static factory •() → self::Model { diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/regress_51190.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/regress_51190.dart.expect index 34a69900d93..38497686b4f 100644 --- a/pkg/vm/testcases/transformations/type_flow/transformer/regress_51190.dart.expect +++ b/pkg/vm/testcases/transformations/type_flow/transformer/regress_51190.dart.expect @@ -2,9 +2,9 @@ library #lib; import self as self; import "dart:core" as core; -static method test1([@vm.inferred-type.metadata=dart.core::_Closure] core::Function x, [@vm.inferred-type.metadata=dart.core::_Closure] core::Object y) → core::bool +static method test1([@vm.inferred-arg-type.metadata=dart.core::_Closure] core::Function x, [@vm.inferred-arg-type.metadata=dart.core::_Closure] core::Object y) → core::bool return [@vm.direct-call.metadata=dart.core::_Closure.==] [@vm.inferred-type.metadata=dart.core::bool (skip check) (receiver not int)] x =={core::Function::==}{(core::Object) → core::bool} y; -static method test2([@vm.inferred-type.metadata=dart.core::_Closure] () → void x, [@vm.inferred-type.metadata=dart.core::_Closure] core::Object y) → core::bool +static method test2([@vm.inferred-arg-type.metadata=dart.core::_Closure] () → void x, [@vm.inferred-arg-type.metadata=dart.core::_Closure] core::Object y) → core::bool return [@vm.direct-call.metadata=dart.core::_Closure.==] [@vm.inferred-type.metadata=dart.core::bool (skip check) (receiver not int)] x =={core::Object::==}{(core::Object) → core::bool} y; static method foo1() → void {} static method foo2() → void {} diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/regress_51630.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/regress_51630.dart.expect index f89bc46e733..6cfc81753e3 100644 --- a/pkg/vm/testcases/transformations/type_flow/transformer/regress_51630.dart.expect +++ b/pkg/vm/testcases/transformations/type_flow/transformer/regress_51630.dart.expect @@ -5,7 +5,7 @@ import "dart:math" as math; import "dart:math" show Random; -static method listEquals([@vm.inferred-type.metadata=dart.core::_GrowableList] core::List list1, [@vm.inferred-type.metadata=dart.core::_GrowableList] core::List list2) → core::bool { +static method listEquals([@vm.inferred-arg-type.metadata=dart.core::_GrowableList] core::List list1, [@vm.inferred-arg-type.metadata=dart.core::_GrowableList] core::List list2) → core::bool { if(core::identical(list1, list2)) { return true; } 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 cfbe1c2729f..bae6c58af7d 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 @@ class A1 extends core::Object { synthetic constructor •() → self::A1 : super core::Object::•() ; -[@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6] method call([[@vm.inferred-type.metadata=dart.core::_Smi (value: 1)] dynamic a1 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi (value: 2)] dynamic a2 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi (value: 3)] dynamic a3 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi (value: 4)] 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([[@vm.inferred-arg-type.metadata=dart.core::_Smi (value: 1)] dynamic a1 = #C1, [@vm.inferred-arg-type.metadata=dart.core::_Smi (value: 2)] dynamic a2 = #C1, [@vm.inferred-arg-type.metadata=dart.core::_Smi (value: 3)] dynamic a3 = #C1, [@vm.inferred-arg-type.metadata=dart.core::_Smi (value: 4)] dynamic a4 = #C1, [@vm.inferred-arg-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(a5); } } @@ -42,7 +42,7 @@ class A2 extends core::Object { synthetic constructor •() → self::A2 : super core::Object::•() ; -[@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:13,getterSelectorId:14] method call([[@vm.inferred-type.metadata=dart.core::_Smi (value: 1)] dynamic a1 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi (value: 2)] dynamic a2 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi (value: 3)] dynamic a3 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi (value: 4)] dynamic a4 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi (value: 5)] 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([[@vm.inferred-arg-type.metadata=dart.core::_Smi (value: 1)] dynamic a1 = #C1, [@vm.inferred-arg-type.metadata=dart.core::_Smi (value: 2)] dynamic a2 = #C1, [@vm.inferred-arg-type.metadata=dart.core::_Smi (value: 3)] dynamic a3 = #C1, [@vm.inferred-arg-type.metadata=dart.core::_Smi (value: 4)] dynamic a4 = #C1, [@vm.inferred-arg-type.metadata=dart.core::_Smi (value: 5)] dynamic a5 = #C1, [@vm.inferred-arg-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 @@ class A3 extends core::Object { synthetic constructor •() → self::A3 : super core::Object::•() ; -[@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:24,getterSelectorId:25] method call([[@vm.inferred-type.metadata=dart.core::_Smi (value: 1)] dynamic a1 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi (value: 2)] dynamic a2 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi (value: 3)] dynamic a3 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi (value: 4)] dynamic a4 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi (value: 5)] dynamic a5 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi (value: 6)] 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([[@vm.inferred-arg-type.metadata=dart.core::_Smi (value: 1)] dynamic a1 = #C1, [@vm.inferred-arg-type.metadata=dart.core::_Smi (value: 2)] dynamic a2 = #C1, [@vm.inferred-arg-type.metadata=dart.core::_Smi (value: 3)] dynamic a3 = #C1, [@vm.inferred-arg-type.metadata=dart.core::_Smi (value: 4)] dynamic a4 = #C1, [@vm.inferred-arg-type.metadata=dart.core::_Smi (value: 5)] dynamic a5 = #C1, [@vm.inferred-arg-type.metadata=dart.core::_Smi (value: 6)] dynamic a6 = #C1, [@vm.inferred-arg-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 @@ class A4 extends core::Object { synthetic constructor •() → self::A4 : super core::Object::•() ; -[@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:32,getterSelectorId:33] method call([[@vm.inferred-type.metadata=dart.core::_Smi (value: 1)] dynamic a1 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi (value: 2)] dynamic a2 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi (value: 3)] dynamic a3 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi (value: 4)] dynamic a4 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi (value: 5)] dynamic a5 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi (value: 6)] dynamic a6 = #C1, [@vm.inferred-type.metadata=dart.core::_Smi (value: 7)] 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([[@vm.inferred-arg-type.metadata=dart.core::_Smi (value: 1)] dynamic a1 = #C1, [@vm.inferred-arg-type.metadata=dart.core::_Smi (value: 2)] dynamic a2 = #C1, [@vm.inferred-arg-type.metadata=dart.core::_Smi (value: 3)] dynamic a3 = #C1, [@vm.inferred-arg-type.metadata=dart.core::_Smi (value: 4)] dynamic a4 = #C1, [@vm.inferred-arg-type.metadata=dart.core::_Smi (value: 5)] dynamic a5 = #C1, [@vm.inferred-arg-type.metadata=dart.core::_Smi (value: 6)] dynamic a6 = #C1, [@vm.inferred-arg-type.metadata=dart.core::_Smi (value: 7)] dynamic a7 = #C1, [@vm.inferred-arg-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/regress_flutter81068.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/regress_flutter81068.dart.expect index e7d4fa9753b..95580c382b4 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,7 +19,7 @@ class B extends self::A impleme return throw "Not implemented"; [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4] no-such-method-forwarder method then((self::B::T%) → FutureOronValue, {core::Function? onError = #C1}) → asy::Future return _in::unsafeCast>([@vm.direct-call.metadata=#lib::B.noSuchMethod] [@vm.inferred-type.metadata=! (skip check)] this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C2, 0, [@vm.inferred-type.metadata=dart.core::_ImmutableList] core::List::unmodifiable([@vm.inferred-type.metadata=dart.core::_GrowableList] core::_GrowableList::_literal1(self::B::then::R%)), [@vm.inferred-type.metadata=dart.core::_ImmutableList] core::List::unmodifiable([@vm.inferred-type.metadata=dart.core::_GrowableList] core::_GrowableList::_literal1(onValue)), [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView] core::Map::unmodifiable({#C3: onError}))){(core::Invocation) → dynamic}); -[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6] no-such-method-forwarder method catchError([@vm.inferred-type.metadata=dart.core::_Closure] core::Function onError) → asy::Future +[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6] no-such-method-forwarder method catchError([@vm.inferred-arg-type.metadata=dart.core::_Closure] core::Function onError) → asy::Future return _in::unsafeCast>([@vm.direct-call.metadata=#lib::B.noSuchMethod] [@vm.inferred-type.metadata=! (skip check)] this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C4, 0, #C5, [@vm.inferred-type.metadata=dart.core::_ImmutableList] core::List::unmodifiable([@vm.inferred-type.metadata=dart.core::_GrowableList] core::_GrowableList::_literal1(onError)), [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView] core::Map::unmodifiable({#C6: #C1}))){(core::Invocation) → dynamic}); [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:7,getterSelectorId:8] no-such-method-forwarder method whenComplete(() → FutureOraction) → asy::Future return _in::unsafeCast>([@vm.direct-call.metadata=#lib::B.noSuchMethod] [@vm.inferred-type.metadata=! (skip check)] this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withType(#C7, 0, #C5, [@vm.inferred-type.metadata=dart.core::_ImmutableList] core::List::unmodifiable([@vm.inferred-type.metadata=dart.core::_GrowableList] core::_GrowableList::_literal1(action)), [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView] core::Map::unmodifiable(#C8))){(core::Invocation) → dynamic}); diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/tear_off_interface_method.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/tear_off_interface_method.dart.expect index 394df1d8240..c35c81d4b56 100644 --- a/pkg/vm/testcases/transformations/type_flow/transformer/tear_off_interface_method.dart.expect +++ b/pkg/vm/testcases/transformations/type_flow/transformer/tear_off_interface_method.dart.expect @@ -20,7 +20,7 @@ class B extends self::A { } class TearOffInterfaceMethod extends core::Object { [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6] field dynamic bazz; - constructor •([@vm.inferred-type.metadata=#lib::B] self::A arg) → self::TearOffInterfaceMethod + constructor •([@vm.inferred-arg-type.metadata=#lib::B] self::A arg) → self::TearOffInterfaceMethod : self::TearOffInterfaceMethod::bazz = arg.{self::A::foo}{() → core::int}, super core::Object::•() ; } 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 aca65b34134..64c892400cf 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 @@ -23,7 +23,7 @@ class UsedClass extends core::Object implements self::UnusedInterface { : super core::Object::•() ; } -static method usedMethod([@vm.inferred-type.metadata=#lib::UsedClass] self::UnusedInterface c) → dynamic { +static method usedMethod([@vm.inferred-arg-type.metadata=#lib::UsedClass] self::UnusedInterface c) → dynamic { [@vm.direct-call.metadata=#lib::UsedClass.usedInterfaceField] [@vm.inferred-type.metadata=!? (skip check)] c.{self::UnusedInterface::usedInterfaceField} = [@vm.direct-call.metadata=#lib::UsedClass.usedInterfaceField] [@vm.inferred-type.metadata=dart.core::Null? (value: null)] c.{self::UnusedInterface::usedInterfaceField}{core::int?}; } static method main() → dynamic { diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/tree_shake_field.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/tree_shake_field.dart.expect index c01cec56c38..f41121bc4ce 100644 --- a/pkg/vm/testcases/transformations/type_flow/transformer/tree_shake_field.dart.expect +++ b/pkg/vm/testcases/transformations/type_flow/transformer/tree_shake_field.dart.expect @@ -13,7 +13,7 @@ class Class extends core::Object implements lib::Interface { ; [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5] set /*isLegacy*/ field2(synthesized core::int? value) → void; } -static method method([@vm.inferred-type.metadata=#lib::Class] lib::Interface i) → void { +static method method([@vm.inferred-arg-type.metadata=#lib::Class] lib::Interface i) → void { [@vm.direct-call.metadata=#lib::Class.field2] [@vm.inferred-type.metadata=!? (skip check)] i.{lib::Interface::field2} = [@vm.direct-call.metadata=#lib::Class.field1] [@vm.inferred-type.metadata=dart.core::Null? (value: null)] i.{lib::Interface::field1}{core::int?}; [@vm.direct-call.metadata=#lib::Class.field3] [@vm.inferred-type.metadata=!? (skip check)] i.{lib::Interface::field3} = [@vm.direct-call.metadata=#lib::Class.field3] [@vm.inferred-type.metadata=dart.core::Null? (value: null)] i.{lib::Interface::field3}{core::int?}; } diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/tree_shake_field_linked.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/tree_shake_field_linked.dart.expect index c01cec56c38..f41121bc4ce 100644 --- a/pkg/vm/testcases/transformations/type_flow/transformer/tree_shake_field_linked.dart.expect +++ b/pkg/vm/testcases/transformations/type_flow/transformer/tree_shake_field_linked.dart.expect @@ -13,7 +13,7 @@ class Class extends core::Object implements lib::Interface { ; [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5] set /*isLegacy*/ field2(synthesized core::int? value) → void; } -static method method([@vm.inferred-type.metadata=#lib::Class] lib::Interface i) → void { +static method method([@vm.inferred-arg-type.metadata=#lib::Class] lib::Interface i) → void { [@vm.direct-call.metadata=#lib::Class.field2] [@vm.inferred-type.metadata=!? (skip check)] i.{lib::Interface::field2} = [@vm.direct-call.metadata=#lib::Class.field1] [@vm.inferred-type.metadata=dart.core::Null? (value: null)] i.{lib::Interface::field1}{core::int?}; [@vm.direct-call.metadata=#lib::Class.field3] [@vm.inferred-type.metadata=!? (skip check)] i.{lib::Interface::field3} = [@vm.direct-call.metadata=#lib::Class.field3] [@vm.inferred-type.metadata=dart.core::Null? (value: null)] i.{lib::Interface::field3}{core::int?}; } diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/type_cast_elimination.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/type_cast_elimination.dart.expect index 9662ef23500..79f0eb55767 100644 --- a/pkg/vm/testcases/transformations/type_flow/transformer/type_cast_elimination.dart.expect +++ b/pkg/vm/testcases/transformations/type_flow/transformer/type_cast_elimination.dart.expect @@ -37,19 +37,19 @@ static method testObjectNegative() → dynamic return let dynamic #t1 = #C2 in #t1 as core::Object; static method testNullableObject() → dynamic return #C2; -static method testAOfNum1([@vm.inferred-type.metadata=#lib::B] dynamic x) → dynamic +static method testAOfNum1([@vm.inferred-arg-type.metadata=#lib::B] dynamic x) → dynamic return _in::unsafeCast>(x); -static method testAOfNum2negative([@vm.inferred-type.metadata=#lib::B] dynamic x) → dynamic +static method testAOfNum2negative([@vm.inferred-arg-type.metadata=#lib::B] dynamic x) → dynamic return x as self::A; static method testAOfNum3negative() → dynamic return #C2 as self::A; -static method testAOfNullableNum([@vm.inferred-type.metadata=#lib::B] dynamic x) → dynamic +static method testAOfNullableNum([@vm.inferred-arg-type.metadata=#lib::B] dynamic x) → dynamic return _in::unsafeCast>(x); static method testNullableAOfNum() → dynamic return _in::unsafeCast?>(#C2); -static method testNullableAOfNumNegative([@vm.inferred-type.metadata=#lib::B] dynamic x) → dynamic +static method testNullableAOfNumNegative([@vm.inferred-arg-type.metadata=#lib::B] dynamic x) → dynamic return x as self::A?; -static method testNullableAOfNullableNum([@vm.inferred-type.metadata=#lib::B] dynamic x) → dynamic +static method testNullableAOfNullableNum([@vm.inferred-arg-type.metadata=#lib::B] dynamic x) → dynamic return _in::unsafeCast?>(x); static method main() → void { self::testInt1(); diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/unboxed_getters.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/unboxed_getters.dart.expect index 38d86966460..9979ca6d47f 100644 --- a/pkg/vm/testcases/transformations/type_flow/transformer/unboxed_getters.dart.expect +++ b/pkg/vm/testcases/transformations/type_flow/transformer/unboxed_getters.dart.expect @@ -7,7 +7,7 @@ abstract class BI1 extends core::Object { } class BI1A extends core::Object implements self::BI1 { [@vm.inferred-type.metadata=int] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:1] final field core::int? value; -[@vm.unboxing-info.metadata=(i)->b] constructor •([@vm.inferred-type.metadata=int] core::int? value) → self::BI1A +[@vm.unboxing-info.metadata=(i)->b] constructor •([@vm.inferred-arg-type.metadata=int] core::int? value) → self::BI1A : self::BI1A::value = value, super core::Object::•() ; } @@ -40,7 +40,7 @@ abstract class BI3 extends core::Object { } class BI3A extends core::Object implements self::BI3 { [@vm.inferred-type.metadata=int?] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4] field core::int? value; -[@vm.unboxing-info.metadata=(i)->b] constructor •([@vm.inferred-type.metadata=int] core::int? value) → self::BI3A +[@vm.unboxing-info.metadata=(i)->b] constructor •([@vm.inferred-arg-type.metadata=int] core::int? value) → self::BI3A : self::BI3A::value = value, super core::Object::•() ; } @@ -50,14 +50,14 @@ class BI3B extends core::Object implements self::BI3 { ; [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4] get value() → core::int? return [@vm.inferred-type.metadata=int] self::smiOrMint; -[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4] set value([@vm.inferred-type.metadata=dart.core::Null? (value: null)] core::int? v) → void {} +[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4] set value([@vm.inferred-arg-type.metadata=dart.core::Null? (value: null)] core::int? v) → void {} } abstract class UBI extends core::Object { [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:5] [@vm.unboxing-info.metadata=()->i] abstract get /*isLegacy*/ value() → core::int?; } class UBIA extends core::Object implements self::UBI { [@vm.inferred-type.metadata=int] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:6,getterSelectorId:5] [@vm.unboxing-info.metadata=(i)->i] field core::int? value; -[@vm.unboxing-info.metadata=(i)->b] constructor •([@vm.inferred-type.metadata=int] core::int? value) → self::UBIA +[@vm.unboxing-info.metadata=(i)->b] constructor •([@vm.inferred-arg-type.metadata=int] core::int? value) → self::UBIA : self::UBIA::value = value, super core::Object::•() ; } @@ -74,7 +74,7 @@ class UBIB extends core::Object implements self::UBI { return -6144092014192636707; [@vm.unboxing-info.metadata=()->i]static get smiOrMint() → core::int return [@vm.inferred-type.metadata=dart.core::bool] self::kTrue ?{core::int} 1 : [@vm.inferred-type.metadata=int] self::mint; -static method use([@vm.inferred-type.metadata=int?] dynamic object) → void { +static method use([@vm.inferred-arg-type.metadata=int?] dynamic object) → void { [@vm.inferred-type.metadata=int?] self::usedObject == null ?{dynamic} self::usedObject = object : null; } static method main() → dynamic { diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/unboxed_instance_fields.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/unboxed_instance_fields.dart.expect index 793ecf0ced6..ac93fb01204 100644 --- a/pkg/vm/testcases/transformations/type_flow/transformer/unboxed_instance_fields.dart.expect +++ b/pkg/vm/testcases/transformations/type_flow/transformer/unboxed_instance_fields.dart.expect @@ -17,7 +17,7 @@ class A extends core::Object { [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:13,getterSelectorId:14] field dynamic boxedNullableIntOrDouble; [@vm.inferred-type.metadata=#lib::X?] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:15,getterSelectorId:16] field dynamic boxedNullableX; [@vm.inferred-type.metadata=#lib::X] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:17,getterSelectorId:18] field dynamic boxedX; -[@vm.unboxing-info.metadata=(i,i,d,b,b,b,b,b,b)->b] constructor •([@vm.inferred-type.metadata=dart.core::_Smi] dynamic unboxedSmi, [@vm.inferred-type.metadata=int] dynamic unboxedInt, [@vm.inferred-type.metadata=dart.core::_Double] dynamic unboxedDouble, [@vm.inferred-type.metadata=int?] dynamic boxedNullableInt, [@vm.inferred-type.metadata=dart.core::_Double?] dynamic boxedNullableDouble, [@vm.inferred-type.metadata=!] dynamic boxedNonNullableIntOrDouble, dynamic boxedNullableIntOrDouble, [@vm.inferred-type.metadata=#lib::X?] dynamic boxedNullableX, [@vm.inferred-type.metadata=#lib::X] dynamic boxedX) → self::A +[@vm.unboxing-info.metadata=(i,i,d,b,b,b,b,b,b)->b] constructor •([@vm.inferred-arg-type.metadata=dart.core::_Smi] dynamic unboxedSmi, [@vm.inferred-arg-type.metadata=int] dynamic unboxedInt, [@vm.inferred-arg-type.metadata=dart.core::_Double] dynamic unboxedDouble, [@vm.inferred-arg-type.metadata=int?] dynamic boxedNullableInt, [@vm.inferred-arg-type.metadata=dart.core::_Double?] dynamic boxedNullableDouble, [@vm.inferred-arg-type.metadata=!] dynamic boxedNonNullableIntOrDouble, dynamic boxedNullableIntOrDouble, [@vm.inferred-arg-type.metadata=#lib::X?] dynamic boxedNullableX, [@vm.inferred-arg-type.metadata=#lib::X] dynamic boxedX) → self::A : self::A::unboxedSmi = unboxedSmi, self::A::unboxedInt = unboxedInt, self::A::unboxedDouble = unboxedDouble, self::A::boxedNullableInt = boxedNullableInt, self::A::boxedNullableDouble = boxedNullableDouble, self::A::boxedNonNullableIntOrDouble = boxedNonNullableIntOrDouble, self::A::boxedNullableIntOrDouble = boxedNullableIntOrDouble, self::A::boxedNullableX = boxedNullableX, self::A::boxedX = boxedX, super core::Object::•() ; } diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/unboxed_instance_method.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/unboxed_instance_method.dart.expect index 784f48e6dc3..34f52837b56 100644 --- a/pkg/vm/testcases/transformations/type_flow/transformer/unboxed_instance_method.dart.expect +++ b/pkg/vm/testcases/transformations/type_flow/transformer/unboxed_instance_method.dart.expect @@ -23,7 +23,7 @@ class Impl1 extends core::Object implements self::Interface { synthetic constructor •() → self::Impl1 : super core::Object::•() ; -[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] [@vm.unboxing-info.metadata=(i,d,b,b,b,b,b,b)->b] method takePositional([@vm.inferred-type.metadata=int] dynamic unboxedInt, [@vm.inferred-type.metadata=dart.core::_Double] dynamic unboxedDouble, [@vm.inferred-type.metadata=int?] dynamic boxedNullableInt, [@vm.inferred-type.metadata=dart.core::_Double?] dynamic boxedNullableDouble, [@vm.inferred-type.metadata=!] dynamic boxedNonNullableIntOrDouble, [@vm.inferred-type.metadata=dart.core::_Double?] dynamic boxedNullableIntOrDouble, [@vm.inferred-type.metadata=#lib::X?] dynamic boxedNullableX, [@vm.inferred-type.metadata=#lib::X] dynamic boxedX) → void { +[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] [@vm.unboxing-info.metadata=(i,d,b,b,b,b,b,b)->b] method takePositional([@vm.inferred-arg-type.metadata=int] dynamic unboxedInt, [@vm.inferred-arg-type.metadata=dart.core::_Double] dynamic unboxedDouble, [@vm.inferred-arg-type.metadata=int?] dynamic boxedNullableInt, [@vm.inferred-arg-type.metadata=dart.core::_Double?] dynamic boxedNullableDouble, [@vm.inferred-arg-type.metadata=!] dynamic boxedNonNullableIntOrDouble, [@vm.inferred-arg-type.metadata=dart.core::_Double?] dynamic boxedNullableIntOrDouble, [@vm.inferred-arg-type.metadata=#lib::X?] dynamic boxedNullableX, [@vm.inferred-arg-type.metadata=#lib::X] dynamic boxedX) → void { self::use(unboxedInt); self::use(unboxedDouble); self::use(boxedNullableInt); @@ -56,7 +56,7 @@ class BaseImpl2 extends core::Object { synthetic constructor •() → self::BaseImpl2 : super core::Object::•() ; -[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] [@vm.unboxing-info.metadata=(i,d,b,b,b,b,b,b)->b] method takePositional([@vm.inferred-type.metadata=dart.core::_Smi (value: 2)] dynamic unboxedInt, [@vm.inferred-type.metadata=dart.core::_Double (value: 2.2)] dynamic unboxedDouble, [@vm.inferred-type.metadata=dart.core::_Smi (value: 2)] dynamic boxedNullableInt, [@vm.inferred-type.metadata=dart.core::_Double (value: 2.2)] dynamic boxedNullableDouble, [@vm.inferred-type.metadata=dart.core::_Double (value: 2.2)] dynamic boxedNonNullableIntOrDouble, [@vm.inferred-type.metadata=dart.core::_Smi (value: 2)] dynamic boxedNullableIntOrDouble, [@vm.inferred-type.metadata=#lib::X] dynamic boxedNullableX, [@vm.inferred-type.metadata=#lib::X] dynamic boxedX) → void { +[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] [@vm.unboxing-info.metadata=(i,d,b,b,b,b,b,b)->b] method takePositional([@vm.inferred-arg-type.metadata=dart.core::_Smi (value: 2)] dynamic unboxedInt, [@vm.inferred-arg-type.metadata=dart.core::_Double (value: 2.2)] dynamic unboxedDouble, [@vm.inferred-arg-type.metadata=dart.core::_Smi (value: 2)] dynamic boxedNullableInt, [@vm.inferred-arg-type.metadata=dart.core::_Double (value: 2.2)] dynamic boxedNullableDouble, [@vm.inferred-arg-type.metadata=dart.core::_Double (value: 2.2)] dynamic boxedNonNullableIntOrDouble, [@vm.inferred-arg-type.metadata=dart.core::_Smi (value: 2)] dynamic boxedNullableIntOrDouble, [@vm.inferred-arg-type.metadata=#lib::X] dynamic boxedNullableX, [@vm.inferred-arg-type.metadata=#lib::X] dynamic boxedX) → void { self::use(unboxedInt); self::use(unboxedDouble); self::use(boxedNullableInt); @@ -89,7 +89,7 @@ class SubImpl3 extends self::BaseImpl2 implements self::Interface { synthetic constructor •() → self::SubImpl3 : super self::BaseImpl2::•() ; -[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] [@vm.unboxing-info.metadata=(i,d,b,b,b,b,b,b)->b] method takePositional([@vm.inferred-type.metadata=int] dynamic unboxedInt, [@vm.inferred-type.metadata=dart.core::_Double] dynamic unboxedDouble, [@vm.inferred-type.metadata=int] dynamic boxedNullableInt, [@vm.inferred-type.metadata=dart.core::_Double] dynamic boxedNullableDouble, [@vm.inferred-type.metadata=dart.core::_Double] dynamic boxedNonNullableIntOrDouble, [@vm.inferred-type.metadata=!] dynamic boxedNullableIntOrDouble, [@vm.inferred-type.metadata=#lib::X] dynamic boxedNullableX, [@vm.inferred-type.metadata=#lib::X] dynamic boxedX) → void { +[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] [@vm.unboxing-info.metadata=(i,d,b,b,b,b,b,b)->b] method takePositional([@vm.inferred-arg-type.metadata=int] dynamic unboxedInt, [@vm.inferred-arg-type.metadata=dart.core::_Double] dynamic unboxedDouble, [@vm.inferred-arg-type.metadata=int] dynamic boxedNullableInt, [@vm.inferred-arg-type.metadata=dart.core::_Double] dynamic boxedNullableDouble, [@vm.inferred-arg-type.metadata=dart.core::_Double] dynamic boxedNonNullableIntOrDouble, [@vm.inferred-arg-type.metadata=!] dynamic boxedNullableIntOrDouble, [@vm.inferred-arg-type.metadata=#lib::X] dynamic boxedNullableX, [@vm.inferred-arg-type.metadata=#lib::X] dynamic boxedX) → void { self::use(unboxedInt); self::use(unboxedDouble); self::use(boxedNullableInt); diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/unboxed_instance_method_tearoff.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/unboxed_instance_method_tearoff.dart.expect index e6a52dacd47..e53c68eeb07 100644 --- a/pkg/vm/testcases/transformations/type_flow/transformer/unboxed_instance_method_tearoff.dart.expect +++ b/pkg/vm/testcases/transformations/type_flow/transformer/unboxed_instance_method_tearoff.dart.expect @@ -56,7 +56,7 @@ class BaseImpl2 extends core::Object { synthetic constructor •() → self::BaseImpl2 : super core::Object::•() ; -[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] method takePositional([@vm.inferred-type.metadata=dart.core::_Smi (value: 2)] core::int? unboxedSmi, [@vm.inferred-type.metadata=dart.core::_Smi (value: 2)] dynamic unboxedInt, [@vm.inferred-type.metadata=dart.core::_Double (value: 2.2)] dynamic unboxedDouble, [@vm.inferred-type.metadata=dart.core::_Smi (value: 2)] dynamic boxedNullableInt, [@vm.inferred-type.metadata=dart.core::_Double (value: 2.2)] dynamic boxedNullableDouble, [@vm.inferred-type.metadata=dart.core::_Double (value: 2.2)] dynamic boxedNonNullableIntOrDouble, [@vm.inferred-type.metadata=dart.core::_Smi (value: 2)] dynamic boxedNullableIntOrDouble, [@vm.inferred-type.metadata=#lib::X] dynamic boxedNullableX, [@vm.inferred-type.metadata=#lib::X] dynamic boxedX) → void { +[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] method takePositional([@vm.inferred-arg-type.metadata=dart.core::_Smi (value: 2)] core::int? unboxedSmi, [@vm.inferred-arg-type.metadata=dart.core::_Smi (value: 2)] dynamic unboxedInt, [@vm.inferred-arg-type.metadata=dart.core::_Double (value: 2.2)] dynamic unboxedDouble, [@vm.inferred-arg-type.metadata=dart.core::_Smi (value: 2)] dynamic boxedNullableInt, [@vm.inferred-arg-type.metadata=dart.core::_Double (value: 2.2)] dynamic boxedNullableDouble, [@vm.inferred-arg-type.metadata=dart.core::_Double (value: 2.2)] dynamic boxedNonNullableIntOrDouble, [@vm.inferred-arg-type.metadata=dart.core::_Smi (value: 2)] dynamic boxedNullableIntOrDouble, [@vm.inferred-arg-type.metadata=#lib::X] dynamic boxedNullableX, [@vm.inferred-arg-type.metadata=#lib::X] dynamic boxedX) → void { self::use(unboxedInt); self::use(unboxedDouble); self::use(boxedNullableInt); @@ -66,23 +66,23 @@ class BaseImpl2 extends core::Object { self::use(boxedNullableX); self::use(boxedX); } -[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4] [@vm.unboxing-info.metadata=(b)->i] method returnUnboxedSmi([@vm.inferred-type.metadata=dart.core::Null? (value: null)] self::X? ignored) → dynamic +[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4] [@vm.unboxing-info.metadata=(b)->i] method returnUnboxedSmi([@vm.inferred-arg-type.metadata=dart.core::Null? (value: null)] self::X? ignored) → dynamic return 2; -[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6] [@vm.unboxing-info.metadata=(b)->i] method returnUnboxedInt([@vm.inferred-type.metadata=dart.core::Null? (value: null)] self::X? ignored) → dynamic +[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6] [@vm.unboxing-info.metadata=(b)->i] method returnUnboxedInt([@vm.inferred-arg-type.metadata=dart.core::Null? (value: null)] self::X? ignored) → dynamic return [@vm.inferred-type.metadata=int] self::mint; -[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:7,getterSelectorId:8] [@vm.unboxing-info.metadata=(b)->d] method returnUnboxedDouble([@vm.inferred-type.metadata=dart.core::Null? (value: null)] self::X? ignored) → dynamic +[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:7,getterSelectorId:8] [@vm.unboxing-info.metadata=(b)->d] method returnUnboxedDouble([@vm.inferred-arg-type.metadata=dart.core::Null? (value: null)] self::X? ignored) → dynamic return 2.2; -[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:9,getterSelectorId:10] method returnBoxedNullableInt([@vm.inferred-type.metadata=dart.core::Null? (value: null)] self::X? ignored) → dynamic +[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:9,getterSelectorId:10] method returnBoxedNullableInt([@vm.inferred-arg-type.metadata=dart.core::Null? (value: null)] self::X? ignored) → dynamic return 2; -[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:11,getterSelectorId:12] method returnBoxedNullableDouble([@vm.inferred-type.metadata=dart.core::Null? (value: null)] self::X? ignored) → dynamic +[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:11,getterSelectorId:12] method returnBoxedNullableDouble([@vm.inferred-arg-type.metadata=dart.core::Null? (value: null)] self::X? ignored) → dynamic return 2.2; -[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:13,getterSelectorId:14] method returnBoxedIntOrDouble([@vm.inferred-type.metadata=dart.core::Null? (value: null)] self::X? ignored) → dynamic +[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:13,getterSelectorId:14] method returnBoxedIntOrDouble([@vm.inferred-arg-type.metadata=dart.core::Null? (value: null)] self::X? ignored) → dynamic return 2.2; -[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:15,getterSelectorId:16] method returnBoxedNullableIntOrDouble([@vm.inferred-type.metadata=dart.core::Null? (value: null)] self::X? ignored) → dynamic +[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:15,getterSelectorId:16] method returnBoxedNullableIntOrDouble([@vm.inferred-arg-type.metadata=dart.core::Null? (value: null)] self::X? ignored) → dynamic return 2; -[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:17,getterSelectorId:18] method returnBoxedNullableX([@vm.inferred-type.metadata=dart.core::Null? (value: null)] self::X? ignored) → dynamic +[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:17,getterSelectorId:18] method returnBoxedNullableX([@vm.inferred-arg-type.metadata=dart.core::Null? (value: null)] self::X? ignored) → dynamic return new self::X::•(); -[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:19,getterSelectorId:20] method returnBoxedX([@vm.inferred-type.metadata=dart.core::Null? (value: null)] self::X? ignored) → dynamic +[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:19,getterSelectorId:20] method returnBoxedX([@vm.inferred-arg-type.metadata=dart.core::Null? (value: null)] self::X? ignored) → dynamic return new self::X::•(); } class SubImpl3 extends self::BaseImpl2 implements self::Interface { diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/unboxed_static_method.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/unboxed_static_method.dart.expect index 5f128fbb19b..0c7e6e99aee 100644 --- a/pkg/vm/testcases/transformations/type_flow/transformer/unboxed_static_method.dart.expect +++ b/pkg/vm/testcases/transformations/type_flow/transformer/unboxed_static_method.dart.expect @@ -17,7 +17,7 @@ static field dynamic usedObject; static method use(dynamic object) → void { self::usedObject == null ?{dynamic} self::usedObject = object : null; } -[@vm.unboxing-info.metadata=(i,d,b,b,b,b,b,b)->b]static method takePositional([@vm.inferred-type.metadata=int] dynamic unboxedInt, [@vm.inferred-type.metadata=dart.core::_Double] dynamic unboxedDouble, [@vm.inferred-type.metadata=int?] dynamic boxedNullableInt, [@vm.inferred-type.metadata=dart.core::_Double?] dynamic boxedNullableDouble, [@vm.inferred-type.metadata=!] dynamic boxedIntOrDouble, dynamic boxedNullableIntOrDouble, [@vm.inferred-type.metadata=#lib::X?] dynamic boxedNullableX, [@vm.inferred-type.metadata=#lib::X] dynamic boxedX) → void { +[@vm.unboxing-info.metadata=(i,d,b,b,b,b,b,b)->b]static method takePositional([@vm.inferred-arg-type.metadata=int] dynamic unboxedInt, [@vm.inferred-arg-type.metadata=dart.core::_Double] dynamic unboxedDouble, [@vm.inferred-arg-type.metadata=int?] dynamic boxedNullableInt, [@vm.inferred-arg-type.metadata=dart.core::_Double?] dynamic boxedNullableDouble, [@vm.inferred-arg-type.metadata=!] dynamic boxedIntOrDouble, dynamic boxedNullableIntOrDouble, [@vm.inferred-arg-type.metadata=#lib::X?] dynamic boxedNullableX, [@vm.inferred-arg-type.metadata=#lib::X] dynamic boxedX) → void { self::use(unboxedInt); self::use(unboxedDouble); self::use(boxedNullableInt); @@ -27,7 +27,7 @@ static method use(dynamic object) → void { self::use(boxedNullableX); self::use(boxedX); } -[@vm.unboxing-info.metadata=(i,d,b,b,b,b,b,b)->b]static method takeOptional([@vm.inferred-type.metadata=int] dynamic unboxedInt, [@vm.inferred-type.metadata=dart.core::_Double] dynamic unboxedDouble, [@vm.inferred-type.metadata=int?] dynamic boxedNullableInt, [@vm.inferred-type.metadata=dart.core::_Double?] dynamic boxedNullableDouble, [@vm.inferred-type.metadata=!] dynamic boxedIntOrDouble, dynamic boxedNullableIntOrDouble, [@vm.inferred-type.metadata=#lib::X?] dynamic boxedNullableX, [@vm.inferred-type.metadata=#lib::X] dynamic boxedX) → void { +[@vm.unboxing-info.metadata=(i,d,b,b,b,b,b,b)->b]static method takeOptional([@vm.inferred-arg-type.metadata=int] dynamic unboxedInt, [@vm.inferred-arg-type.metadata=dart.core::_Double] dynamic unboxedDouble, [@vm.inferred-arg-type.metadata=int?] dynamic boxedNullableInt, [@vm.inferred-arg-type.metadata=dart.core::_Double?] dynamic boxedNullableDouble, [@vm.inferred-arg-type.metadata=!] dynamic boxedIntOrDouble, dynamic boxedNullableIntOrDouble, [@vm.inferred-arg-type.metadata=#lib::X?] dynamic boxedNullableX, [@vm.inferred-arg-type.metadata=#lib::X] dynamic boxedX) → void { self::use(unboxedInt); self::use(unboxedDouble); self::use(boxedNullableInt); @@ -37,7 +37,7 @@ static method use(dynamic object) → void { self::use(boxedNullableX); self::use(boxedX); } -[@vm.unboxing-info.metadata=(b,b,b,b,b,b,d,i)->b]static method takeNamed([@vm.inferred-type.metadata=!] dynamic boxedIntOrDouble, [@vm.inferred-type.metadata=dart.core::_Double?] dynamic boxedNullableDouble, [@vm.inferred-type.metadata=int?] dynamic boxedNullableInt, dynamic boxedNullableIntOrDouble, [@vm.inferred-type.metadata=#lib::X?] dynamic boxedNullableX, [@vm.inferred-type.metadata=#lib::X] dynamic boxedX, [@vm.inferred-type.metadata=dart.core::_Double] dynamic unboxedDouble, [@vm.inferred-type.metadata=int] dynamic unboxedInt) → void { +[@vm.unboxing-info.metadata=(b,b,b,b,b,b,d,i)->b]static method takeNamed([@vm.inferred-arg-type.metadata=!] dynamic boxedIntOrDouble, [@vm.inferred-arg-type.metadata=dart.core::_Double?] dynamic boxedNullableDouble, [@vm.inferred-arg-type.metadata=int?] dynamic boxedNullableInt, dynamic boxedNullableIntOrDouble, [@vm.inferred-arg-type.metadata=#lib::X?] dynamic boxedNullableX, [@vm.inferred-arg-type.metadata=#lib::X] dynamic boxedX, [@vm.inferred-arg-type.metadata=dart.core::_Double] dynamic unboxedDouble, [@vm.inferred-arg-type.metadata=int] dynamic unboxedInt) → void { self::use(unboxedInt); self::use(unboxedDouble); self::use(boxedNullableInt); diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/weak.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/weak.dart.expect index e56bd75561c..9ba67955641 100644 --- a/pkg/vm/testcases/transformations/type_flow/transformer/weak.dart.expect +++ b/pkg/vm/testcases/transformations/type_flow/transformer/weak.dart.expect @@ -24,7 +24,7 @@ class B extends core::Object { return 1; static method used2() → core::String return [@vm.direct-call.metadata=dart.core::_Smi.toString] [@vm.inferred-type.metadata=dart.core::_OneByteString (skip check)] 2.{core::int::toString}(){() → core::String}; -static method register([@vm.inferred-type.metadata=dart.core::_Closure?] () →? core::String getAccessor) → void { +static method register([@vm.inferred-arg-type.metadata=dart.core::_Closure?] () →? core::String getAccessor) → void { if(!(getAccessor == null)) { core::print(getAccessor{() → core::String}(){() → core::String}); } diff --git a/runtime/vm/compiler/frontend/kernel_translation_helper.cc b/runtime/vm/compiler/frontend/kernel_translation_helper.cc index ad56c4a9c0d..328bdee4eea 100644 --- a/runtime/vm/compiler/frontend/kernel_translation_helper.cc +++ b/runtime/vm/compiler/frontend/kernel_translation_helper.cc @@ -1802,8 +1802,9 @@ DirectCallMetadata DirectCallMetadataHelper::GetDirectTargetForMethodInvocation( InferredTypeMetadataHelper::InferredTypeMetadataHelper( KernelReaderHelper* helper, - ConstantReader* constant_reader) - : MetadataHelper(helper, tag(), /* precompiler_only = */ true), + ConstantReader* constant_reader, + InferredTypeMetadataHelper::Kind kind) + : MetadataHelper(helper, tag(kind), /* precompiler_only = */ true), constant_reader_(constant_reader) {} InferredTypeMetadata InferredTypeMetadataHelper::GetInferredType( diff --git a/runtime/vm/compiler/frontend/kernel_translation_helper.h b/runtime/vm/compiler/frontend/kernel_translation_helper.h index 3b5218691dd..21d31931ee6 100644 --- a/runtime/vm/compiler/frontend/kernel_translation_helper.h +++ b/runtime/vm/compiler/frontend/kernel_translation_helper.h @@ -1048,10 +1048,23 @@ struct InferredTypeMetadata { // Helper class which provides access to inferred type metadata. class InferredTypeMetadataHelper : public MetadataHelper { public: - static const char* tag() { return "vm.inferred-type.metadata"; } + enum class Kind { + Type, // Inferred type of a call, field or variable. + ArgType, // Inferred incoming argument type. + }; + + static const char* tag(Kind kind) { + switch (kind) { + case Kind::Type: + return "vm.inferred-type.metadata"; + case Kind::ArgType: + return "vm.inferred-arg-type.metadata"; + } + } explicit InferredTypeMetadataHelper(KernelReaderHelper* helper, - ConstantReader* constant_reader); + ConstantReader* constant_reader, + Kind kind = Kind::Type); InferredTypeMetadata GetInferredType(intptr_t node_offset, bool read_constant = true); diff --git a/runtime/vm/compiler/frontend/scope_builder.cc b/runtime/vm/compiler/frontend/scope_builder.cc index badc48ebc17..ebb4ef846ae 100644 --- a/runtime/vm/compiler/frontend/scope_builder.cc +++ b/runtime/vm/compiler/frontend/scope_builder.cc @@ -33,6 +33,10 @@ ScopeBuilder::ScopeBuilder(ParsedFunction* parsed_function) parsed_function->function().KernelLibraryOffset()), constant_reader_(&helper_, &active_class_), inferred_type_metadata_helper_(&helper_, &constant_reader_), + inferred_arg_type_metadata_helper_( + &helper_, + &constant_reader_, + InferredTypeMetadataHelper::Kind::ArgType), procedure_attributes_metadata_helper_(&helper_), type_translator_(&helper_, &constant_reader_, @@ -1635,7 +1639,8 @@ void ScopeBuilder::AddVariableDeclarationParameter( helper_.data_program_offset_ + helper_.ReaderOffset(); // MetadataHelper expects relative offsets and adjusts them internally const InferredTypeMetadata parameter_type = - inferred_type_metadata_helper_.GetInferredType(helper_.ReaderOffset()); + inferred_arg_type_metadata_helper_.GetInferredType( + helper_.ReaderOffset()); VariableDeclarationHelper helper(&helper_); helper.ReadUntilExcluding(VariableDeclarationHelper::kAnnotations); const intptr_t annotations_offset = helper_.ReaderOffset(); diff --git a/runtime/vm/compiler/frontend/scope_builder.h b/runtime/vm/compiler/frontend/scope_builder.h index 00458bd38bb..aa20f354ffa 100644 --- a/runtime/vm/compiler/frontend/scope_builder.h +++ b/runtime/vm/compiler/frontend/scope_builder.h @@ -176,6 +176,7 @@ class ScopeBuilder { KernelReaderHelper helper_; ConstantReader constant_reader_; InferredTypeMetadataHelper inferred_type_metadata_helper_; + InferredTypeMetadataHelper inferred_arg_type_metadata_helper_; ProcedureAttributesMetadataHelper procedure_attributes_metadata_helper_; TypeTranslator type_translator_;