Files
sdk/pkg/vm/testcases/bytecode/instance_creation.dart.expect
T
Alexander Markov da8cb470cc [vm/bytecode] Represent classes, libraries, scripts and recursive types in bytecode
Size of a large application:
Before: 26628600
After: 21480120 (-19.3%)

Size of snapshots:

isolate_snapshot_framework.bin
Before: 9322496
After: 6782976 (-27.2%)

isolate_snapshot_product_framework.bin
Before: 9166848
After: 6602752 (-27.9%)

Regressions in tests:

1) Test language_2/type_alias_equality_test/04 fails similarly to default mode, as VM
does not implement comparison of function types according to the specification.
Previously this test was passing as function types were canonicalized in bytecode,
which was not always correct. This CL fixes the problem with canonicalization of
function types in bytecode and the test starts failing again.

2) Tests standalone_2/entrypoints_verification_test, standalone_2/io/test_extension_test,
standalone_2/io/test_extension_fail_test fail as native extensions are not supported
in bytecode yet. These tests start passing after df5e7aac17,
which switched bytecode tests to kernel service (on x64), because kernel service doesn't
drop ASTs. This CL switches from reading AST library declarations to bytecode even if
AST is not removed, so tests fail again.

Change-Id: I8b7ba44bfa49d0b1599b2509553ff7c831a4e244
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/104700
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
Reviewed-by: Régis Crelier <regis@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2019-06-20 18:27:21 +00:00

773 lines
22 KiB
Plaintext

main = #lib::main;
[@vm.bytecode=
BytecodeMetadata {
Bytecode (version: stable)
Main library: #lib
Library '#lib'
name '#lib'
script '#lib'
Class '', script = '#lib'
Function 'foo1', static, reflectable, debuggable
parameters [] (required: 0)
return-type dynamic
Bytecode {
Entry 1
CheckStack 0
Allocate CP#0
StoreLocal r0
Push r0
PushConstant CP#1
DirectCall CP#2, 2
Drop1
ReturnTOS
}
ConstantPool {
[0] = Class #lib::C
[1] = ObjectRef 'hello'
[2] = DirectCall '#lib::C:: (constructor)', ArgDesc num-args 2, num-type-args 0, names []
[3] = Reserved
}
Function 'foo2', static, reflectable, debuggable
parameters [] (required: 0)
return-type void
Bytecode {
Entry 1
CheckStack 0
PushConstant CP#1
PushConstant CP#0
AllocateT
StoreLocal r0
Push r0
PushConstant CP#2
DirectCall CP#3, 2
Drop1
Drop1
PushConstant CP#6
PushConstant CP#5
AllocateT
StoreLocal r0
Push r0
DirectCall CP#7, 1
Drop1
Drop1
PushNull
ReturnTOS
}
ConstantPool {
[0] = Class #lib::A
[1] = ObjectRef < dart:core::int, dart:core::String >
[2] = ObjectRef 'hi'
[3] = DirectCall '#lib::A:: (constructor)', ArgDesc num-args 2, num-type-args 0, names []
[4] = Reserved
[5] = Class #lib::B
[6] = ObjectRef < dart:core::List < dart:core::int >, dart:core::String, dart:core::int >
[7] = DirectCall '#lib::B:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
[8] = Reserved
}
Function 'foo3', static, reflectable, debuggable
type-params <dart:core::Object T>
parameters [] (required: 0)
return-type void
Bytecode {
Entry 2
CheckStack 0
CheckFunctionTypeArgs 1, r0
PushNull
Push r0
InstantiateTypeArgumentsTOS 0, CP#1
PushConstant CP#0
AllocateT
StoreLocal r1
Push r1
DirectCall CP#2, 1
Drop1
Drop1
PushNull
ReturnTOS
}
ConstantPool {
[0] = Class #lib::B
[1] = ObjectRef < dart:core::List < dart:core::List < #lib::foo3::TypeParam/0 > >, dart:core::String, dart:core::List < #lib::foo3::TypeParam/0 > >
[2] = DirectCall '#lib::B:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
[3] = Reserved
}
Function 'foo4', static, reflectable, debuggable
parameters [] (required: 0)
return-type void
Bytecode {
Entry 0
CheckStack 0
PushConstant CP#0
DirectCall CP#1, 1
Drop1
PushNull
ReturnTOS
}
ConstantPool {
[0] = ObjectRef < dart:core::int, dart:core::List < dart:core::String > >
[1] = DirectCall '#lib::G::test_factory (constructor)', ArgDesc num-args 1, num-type-args 0, names []
[2] = Reserved
}
Function 'foo5', static, reflectable, debuggable
parameters [] (required: 0)
return-type void
Bytecode {
Entry 0
CheckStack 0
PushNull
DirectCall CP#0, 1
Drop1
PushNull
PushInt 42
DirectCall CP#2, 2
Drop1
PushNull
ReturnTOS
}
ConstantPool {
[0] = DirectCall '#lib::I::test_factory2 (constructor)', ArgDesc num-args 1, num-type-args 0, names []
[1] = Reserved
[2] = DirectCall '#lib::I::test_factory2 (constructor)', ArgDesc num-args 2, num-type-args 0, names ['param']
[3] = Reserved
}
Function 'foo6', static, reflectable, debuggable
parameters [] (required: 0)
return-type dynamic
Bytecode {
Entry 0
CheckStack 0
PushConstant CP#0
PushInt 0
DirectCall CP#1, 2
ReturnTOS
}
ConstantPool {
[0] = ObjectRef < dart:core::String >
[1] = DirectCall 'dart:core::_GrowableList:: (constructor)', ArgDesc num-args 2, num-type-args 0, names []
[2] = Reserved
}
Function 'foo7', static, reflectable, debuggable
parameters [dart:core::int 'n'] (required: 1)
return-type dynamic
Bytecode {
Entry 0
CheckStack 0
PushConstant CP#0
Push FP[-5]
DirectCall CP#1, 2
ReturnTOS
}
ConstantPool {
[0] = ObjectRef < dart:core::int >
[1] = DirectCall 'dart:core::_List:: (constructor)', ArgDesc num-args 2, num-type-args 0, names []
[2] = Reserved
}
Function 'main', static, reflectable, debuggable
parameters [] (required: 0)
return-type dynamic
Bytecode {
Entry 0
CheckStack 0
DirectCall CP#0, 0
Drop1
DirectCall CP#2, 0
Drop1
PushConstant CP#4
DirectCall CP#5, 1
Drop1
PushNull
ReturnTOS
}
ConstantPool {
[0] = DirectCall '#lib::foo1', ArgDesc num-args 0, num-type-args 0, names []
[1] = Reserved
[2] = DirectCall '#lib::foo2', ArgDesc num-args 0, num-type-args 0, names []
[3] = Reserved
[4] = ObjectRef < dart:core::String >
[5] = DirectCall '#lib::foo3', ArgDesc num-args 0, num-type-args 1, names []
[6] = Reserved
}
Class 'Base', script = '#lib'
type-params <dart:core::Object T1, dart:core::Object T2> (args: 2)
extends dart:core::Object
Field 't1', type = #lib::Base::TypeParam/0, getter = 'get:t1', setter = 'set:t1', reflectable
value = null
Field 't2', type = #lib::Base::TypeParam/1, getter = 'get:t2', setter = 'set:t2', reflectable
value = null
Function '', constructor, reflectable, debuggable
parameters [] (required: 0)
return-type #lib::Base < #lib::Base::TypeParam/0, #lib::Base::TypeParam/1 >
Bytecode {
Entry 1
CheckStack 0
Push FP[-5]
DirectCall CP#0, 1
Drop1
PushNull
PushInt 4
CreateArrayTOS
StoreLocal r0
Push r0
PushInt 0
PushConstant CP#2
StoreIndexedTOS
Push r0
PushInt 1
Push FP[-5]
LoadTypeArgumentsField CP#4
PushNull
InstantiateType CP#3
StoreIndexedTOS
Push r0
PushInt 2
PushConstant CP#5
StoreIndexedTOS
Push r0
PushInt 3
Push FP[-5]
LoadTypeArgumentsField CP#4
PushNull
InstantiateType CP#6
StoreIndexedTOS
DirectCall CP#7, 1
DirectCall CP#9, 1
Drop1
PushNull
ReturnTOS
}
Nullable fields: [#lib::Base::t1 (field), #lib::Base::t2 (field)]
ConstantPool {
[0] = DirectCall 'dart:core::Object:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
[1] = Reserved
[2] = ObjectRef 'Base: '
[3] = Type #lib::Base::TypeParam/0
[4] = TypeArgumentsField #lib::Base
[5] = ObjectRef ', '
[6] = Type #lib::Base::TypeParam/1
[7] = DirectCall 'dart:core::_StringBase::_interpolate', ArgDesc num-args 1, num-type-args 0, names []
[8] = Reserved
[9] = DirectCall 'dart:core::print', ArgDesc num-args 1, num-type-args 0, names []
[10] = Reserved
}
Class 'A', script = '#lib'
extends #lib::Base < dart:core::int, dart:core::String >
Function '', constructor, reflectable, debuggable
parameters [dart:core::String 's'] (required: 1)
return-type #lib::A < dart:core::int, dart:core::String >
Bytecode {
Entry 0
CheckStack 0
Push FP[-6]
DirectCall CP#0, 1
Drop1
PushNull
ReturnTOS
}
ConstantPool {
[0] = DirectCall '#lib::Base:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
[1] = Reserved
}
Class 'B', script = '#lib'
type-params <dart:core::Object T> (args: 3)
extends #lib::Base < dart:core::List < #lib::B::TypeParam/0 >, dart:core::String >
Function '', constructor, reflectable, debuggable
parameters [] (required: 0)
return-type #lib::B < dart:core::List < #lib::B::TypeParam/0 >, dart:core::String, #lib::B::TypeParam/0 >
Bytecode {
Entry 1
CheckStack 0
Push FP[-5]
DirectCall CP#0, 1
Drop1
PushNull
PushInt 2
CreateArrayTOS
StoreLocal r0
Push r0
PushInt 0
PushConstant CP#2
StoreIndexedTOS
Push r0
PushInt 1
Push FP[-5]
LoadTypeArgumentsField CP#4
PushNull
InstantiateType CP#3
StoreIndexedTOS
DirectCall CP#5, 1
DirectCall CP#7, 1
Drop1
PushNull
ReturnTOS
}
ConstantPool {
[0] = DirectCall '#lib::Base:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
[1] = Reserved
[2] = ObjectRef 'B: '
[3] = Type #lib::B::TypeParam/0
[4] = TypeArgumentsField #lib::B
[5] = DirectCall 'dart:core::_StringBase::_interpolate', ArgDesc num-args 1, num-type-args 0, names []
[6] = Reserved
[7] = DirectCall 'dart:core::print', ArgDesc num-args 1, num-type-args 0, names []
[8] = Reserved
}
Class 'C', script = '#lib'
extends dart:core::Object
Function '', constructor, reflectable, debuggable
parameters [dart:core::String 's'] (required: 1)
return-type #lib::C
Bytecode {
Entry 1
CheckStack 0
Push FP[-6]
DirectCall CP#0, 1
Drop1
PushNull
PushInt 2
CreateArrayTOS
StoreLocal r0
Push r0
PushInt 0
PushConstant CP#2
StoreIndexedTOS
Push r0
PushInt 1
Push FP[-5]
StoreIndexedTOS
DirectCall CP#3, 1
DirectCall CP#5, 1
Drop1
PushNull
ReturnTOS
}
ConstantPool {
[0] = DirectCall 'dart:core::Object:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
[1] = Reserved
[2] = ObjectRef 'C: '
[3] = DirectCall 'dart:core::_StringBase::_interpolate', ArgDesc num-args 1, num-type-args 0, names []
[4] = Reserved
[5] = DirectCall 'dart:core::print', ArgDesc num-args 1, num-type-args 0, names []
[6] = Reserved
}
Class 'E', script = '#lib'
type-params <dart:core::Object K, dart:core::Object V> (args: 2)
extends dart:core::Object
Function '', constructor, reflectable
parameters [] (required: 0)
return-type #lib::E < #lib::E::TypeParam/0, #lib::E::TypeParam/1 >
Bytecode {
Entry 0
CheckStack 0
Push FP[-5]
DirectCall CP#0, 1
Drop1
PushNull
ReturnTOS
}
ConstantPool {
[0] = DirectCall 'dart:core::Object:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
[1] = Reserved
}
Function 'test_reuse1', reflectable, debuggable
parameters [] (required: 0)
return-type dynamic
Bytecode {
Entry 0
CheckStack 0
Push FP[-5]
LoadTypeArgumentsField CP#0
DirectCall CP#1, 1
ReturnTOS
}
ConstantPool {
[0] = TypeArgumentsField #lib::E
[1] = DirectCall 'dart:core::Map:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
[2] = Reserved
}
Class 'F', script = '#lib'
type-params <dart:core::Object K, dart:core::Object V> (args: 4)
extends #lib::E < dart:core::String, dart:core::List < #lib::F::TypeParam/1 > >
Function '', constructor, reflectable
parameters [] (required: 0)
return-type #lib::F < dart:core::String, dart:core::List < #lib::F::TypeParam/1 >, #lib::F::TypeParam/0, #lib::F::TypeParam/1 >
Bytecode {
Entry 0
CheckStack 0
Push FP[-5]
DirectCall CP#0, 1
Drop1
PushNull
ReturnTOS
}
ConstantPool {
[0] = DirectCall '#lib::E:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
[1] = Reserved
}
Function 'test_reuse2', reflectable, debuggable
parameters [] (required: 0)
return-type dynamic
Bytecode {
Entry 0
CheckStack 0
Push FP[-5]
LoadTypeArgumentsField CP#0
DirectCall CP#1, 1
ReturnTOS
}
ConstantPool {
[0] = TypeArgumentsField #lib::F
[1] = DirectCall 'dart:core::Map:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
[2] = Reserved
}
Class 'G', script = '#lib'
type-params <dart:core::Object K, dart:core::Object V> (args: 2)
extends dart:core::Object
Function '', constructor, reflectable, debuggable
parameters [] (required: 0)
return-type #lib::G < #lib::G::TypeParam/0, #lib::G::TypeParam/1 >
Bytecode {
Entry 0
CheckStack 0
Push FP[-5]
DirectCall CP#0, 1
Drop1
PushNull
ReturnTOS
}
ConstantPool {
[0] = DirectCall 'dart:core::Object:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
[1] = Reserved
}
Function 'test_factory', factory, static, reflectable, debuggable
type-params <dart:core::Object K, dart:core::Object V>
parameters [] (required: 0)
return-type #lib::G < #lib::G::test_factory (constructor)::TypeParam/0, #lib::G::test_factory (constructor)::TypeParam/1 >
Bytecode {
Entry 1
CheckStack 0
Push FP[-5]
PushNull
InstantiateTypeArgumentsTOS 0, CP#1
PushConstant CP#0
AllocateT
StoreLocal r0
Push r0
DirectCall CP#2, 1
Drop1
ReturnTOS
}
ConstantPool {
[0] = Class #lib::H
[1] = ObjectRef < #lib::G::test_factory (constructor)::TypeParam/0, #lib::G::test_factory (constructor)::TypeParam/1, dart:core::String, #lib::G::test_factory (constructor)::TypeParam/0, #lib::G::test_factory (constructor)::TypeParam/1 >
[2] = DirectCall '#lib::H:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
[3] = Reserved
}
Class 'H', script = '#lib'
type-params <dart:core::Object P1, dart:core::Object P2, dart:core::Object P3> (args: 5)
extends #lib::G < #lib::H::TypeParam/1, #lib::H::TypeParam/2 >
Function '', constructor, reflectable
parameters [] (required: 0)
return-type #lib::H < #lib::H::TypeParam/1, #lib::H::TypeParam/2, #lib::H::TypeParam/0, #lib::H::TypeParam/1, #lib::H::TypeParam/2 >
Bytecode {
Entry 0
CheckStack 0
Push FP[-5]
DirectCall CP#0, 1
Drop1
PushNull
ReturnTOS
}
ConstantPool {
[0] = DirectCall '#lib::G:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
[1] = Reserved
}
Class 'I', script = '#lib'
extends dart:core::Object
Function '', constructor, reflectable, debuggable
parameters [dynamic 'param'] (required: 1)
return-type #lib::I
Bytecode {
Entry 0
CheckStack 0
Push FP[-6]
DirectCall CP#0, 1
Drop1
PushNull
ReturnTOS
}
ConstantPool {
[0] = DirectCall 'dart:core::Object:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
[1] = Reserved
}
Function 'test_factory2', factory, static, has-optional-named-params, reflectable, debuggable
parameters [dynamic 'param'] (required: 0)
return-type #lib::I
Bytecode {
EntryOptional 1, 0, 1
LoadConstant r1, CP#0
LoadConstant r1, CP#1
Frame 1
CheckStack 0
Allocate CP#2
StoreLocal r2
Push r2
Push r1
DirectCall CP#3, 2
Drop1
ReturnTOS
}
ConstantPool {
[0] = ObjectRef 'param'
[1] = ObjectRef null
[2] = Class #lib::I
[3] = DirectCall '#lib::I:: (constructor)', ArgDesc num-args 2, num-type-args 0, names []
[4] = Reserved
}
Class 'J', script = '#lib'
extends dart:core::Object
Function '', factory, static, reflectable, debuggable, native 'agent_J'
parameters [] (required: 0)
return-type #lib::J
Bytecode {
Entry 0
CheckStack 0
Push FP[-5]
NativeCall CP#0
ReturnTOS
}
ConstantPool {
[0] = NativeEntry agent_J
}
Class 'K', script = '#lib', abstract
type-params <dart:core::Object A, dart:core::Object B> (args: 2)
extends dart:core::Object
Function '', factory, static, reflectable, debuggable
type-params <dart:core::Object A, dart:core::Object B>
parameters [] (required: 0)
return-type #lib::K < #lib::K:: (constructor)::TypeParam/0, #lib::K:: (constructor)::TypeParam/1 >
Bytecode {
Entry 1
CheckStack 0
Push FP[-5]
PushConstant CP#0
AllocateT
StoreLocal r0
Push r0
DirectCall CP#1, 1
Drop1
ReturnTOS
}
ConstantPool {
[0] = Class #lib::TestTypeArgReuse
[1] = DirectCall '#lib::TestTypeArgReuse:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
[2] = Reserved
}
Class 'TestTypeArgReuse', script = '#lib'
type-params <dart:core::Object P, dart:core::Object Q> (args: 2)
extends #lib::Base < #lib::TestTypeArgReuse::TypeParam/0, #lib::TestTypeArgReuse::TypeParam/1 >
implements [#lib::K < #lib::TestTypeArgReuse::TypeParam/0, #lib::TestTypeArgReuse::TypeParam/1 >]
Function '', constructor, reflectable
parameters [] (required: 0)
return-type #lib::TestTypeArgReuse < #lib::TestTypeArgReuse::TypeParam/0, #lib::TestTypeArgReuse::TypeParam/1 >
Bytecode {
Entry 0
CheckStack 0
Push FP[-5]
DirectCall CP#0, 1
Drop1
PushNull
ReturnTOS
}
ConstantPool {
[0] = DirectCall '#lib::Base:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
[1] = Reserved
}
}
]library #lib from "#lib" as #lib {
class Base<T1 extends dart.core::Object = dynamic, T2 extends dart.core::Object = dynamic> extends dart.core::Object {
generic-covariant-impl field #lib::Base::T1 t1 = null;
generic-covariant-impl field #lib::Base::T2 t2 = null;
constructor •() → #lib::Base<#lib::Base::T1, #lib::Base::T2>
: super dart.core::Object::•() {
dart.core::print("Base: ${#lib::Base::T1}, ${#lib::Base::T2}");
}
}
class A extends #lib::Base<dart.core::int, dart.core::String> {
constructor •(dart.core::String s) → #lib::A
: super #lib::Base::•()
;
}
class B<T extends dart.core::Object = dynamic> extends #lib::Base<dart.core::List<#lib::B::T>, dart.core::String> {
constructor •() → #lib::B<#lib::B::T>
: super #lib::Base::•() {
dart.core::print("B: ${#lib::B::T}");
}
}
class C extends dart.core::Object {
constructor •(dart.core::String s) → #lib::C
: super dart.core::Object::•() {
dart.core::print("C: ${s}");
}
}
class E<K extends dart.core::Object = dynamic, V extends dart.core::Object = dynamic> extends dart.core::Object {
synthetic constructor •() → #lib::E<#lib::E::K, #lib::E::V>
: super dart.core::Object::•()
;
method test_reuse1() → dynamic
return dart.core::Map::•<#lib::E::K, #lib::E::V>();
}
class F<K extends dart.core::Object = dynamic, V extends dart.core::Object = dynamic> extends #lib::E<dart.core::String, dart.core::List<#lib::F::V>> {
synthetic constructor •() → #lib::F<#lib::F::K, #lib::F::V>
: super #lib::E::•()
;
method test_reuse2() → dynamic
return dart.core::Map::•<dart.core::String, dart.core::List<#lib::F::V>>();
}
class G<K extends dart.core::Object = dynamic, V extends dart.core::Object = dynamic> extends dart.core::Object {
constructor •() → #lib::G<#lib::G::K, #lib::G::V>
: super dart.core::Object::•()
;
static factory test_factory<K extends dart.core::Object = dynamic, V extends dart.core::Object = dynamic>() → #lib::G<#lib::G::test_factory::K, #lib::G::test_factory::V>
return new #lib::H::•<dart.core::String, #lib::G::test_factory::K, #lib::G::test_factory::V>();
}
class H<P1 extends dart.core::Object = dynamic, P2 extends dart.core::Object = dynamic, P3 extends dart.core::Object = dynamic> extends #lib::G<#lib::H::P2, #lib::H::P3> {
synthetic constructor •() → #lib::H<#lib::H::P1, #lib::H::P2, #lib::H::P3>
: super #lib::G::•()
;
}
class I extends dart.core::Object {
constructor •(dynamic param) → #lib::I
: super dart.core::Object::•()
;
static factory test_factory2({dynamic param = null}) → #lib::I
return new #lib::I::•(param);
}
class J extends dart.core::Object {
@dart._internal::ExternalName::•("agent_J")
external static factory •() → #lib::J;
}
abstract class K<A extends dart.core::Object = dynamic, B extends dart.core::Object = dynamic> extends dart.core::Object {
static factory •<A extends dart.core::Object = dynamic, B extends dart.core::Object = dynamic>() → #lib::K<#lib::K::•::A, #lib::K::•::B>
return new #lib::TestTypeArgReuse::•<#lib::K::•::A, #lib::K::•::B>();
}
class TestTypeArgReuse<P extends dart.core::Object = dynamic, Q extends dart.core::Object = dynamic> extends #lib::Base<#lib::TestTypeArgReuse::P, #lib::TestTypeArgReuse::Q> implements #lib::K<#lib::TestTypeArgReuse::P, #lib::TestTypeArgReuse::Q> {
synthetic constructor •() → #lib::TestTypeArgReuse<#lib::TestTypeArgReuse::P, #lib::TestTypeArgReuse::Q>
: super #lib::Base::•()
;
}
static method foo1() → dynamic
return new #lib::C::•("hello");
static method foo2() → void {
new #lib::A::•("hi");
new #lib::B::•<dart.core::int>();
}
static method foo3<T extends dart.core::Object = dynamic>() → void {
new #lib::B::•<dart.core::List<#lib::foo3::T>>();
}
static method foo4() → void {
#lib::G::test_factory<dart.core::int, dart.core::List<dart.core::String>>();
}
static method foo5() → void {
#lib::I::test_factory2();
#lib::I::test_factory2(param: 42);
}
static method foo6() → dynamic
return dart.core::_GrowableList::•<dart.core::String>(0);
static method foo7(dart.core::int n) → dynamic
return dart.core::_List::•<dart.core::int>(n);
static method main() → dynamic {
#lib::foo1();
#lib::foo2();
#lib::foo3<dart.core::String>();
}
}