// Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. // @dart = 2.7 /*member: main:[null]*/ main() { simpleStaticCall(); staticCallWithPositionalArguments1(); staticCallWithPositionalArguments2(); staticCallWithOptionalArguments1(); staticCallWithOptionalArguments2(); staticCallWithOptionalArguments3(); staticCallWithOptionalArguments4a(); staticCallWithOptionalArguments4b(); staticCallWithOptionalArguments5(); staticCallWithOptionalArguments6(); staticCallWithNamedArguments1(); staticCallWithNamedArguments2(); staticCallWithNamedArguments3a(); staticCallWithNamedArguments3b(); invokeStaticFieldUninitialized(); invokeStaticFieldTearOff(); invokeStaticTypedFieldTearOff(); invokeStaticFieldTearOffParameters(); invokeStaticGetterTearOff(); invokeStaticTypedGetterTearOff(); invokeStaticGenericMethod1(); invokeStaticGenericMethod2(); invokeStaticGenericGetter1(); invokeStaticGenericGetter2(); invokeStaticGenericField1(); invokeStaticGenericField2(); } //////////////////////////////////////////////////////////////////////////////// /// Call a static method that has a constant return value. //////////////////////////////////////////////////////////////////////////////// /*member: simpleStaticCall:[exact=JSUInt31]*/ simpleStaticCall() => _returnInt(); /*member: _returnInt:[exact=JSUInt31]*/ _returnInt() => 0; //////////////////////////////////////////////////////////////////////////////// /// Call a static method that has two positional parameters, the first argument /// is returned. //////////////////////////////////////////////////////////////////////////////// /*member: staticCallWithPositionalArguments1:[exact=JSUInt31]*/ staticCallWithPositionalArguments1() => _returnFirst(0, 0.5); /*member: _returnFirst:[exact=JSUInt31]*/ _returnFirst(/*[exact=JSUInt31]*/ a, /*[exact=JSNumNotInt]*/ b) => a; //////////////////////////////////////////////////////////////////////////////// /// Call a static method that has two positional parameters, the second argument /// is returned. //////////////////////////////////////////////////////////////////////////////// /*member: staticCallWithPositionalArguments2:[exact=JSNumNotInt]*/ staticCallWithPositionalArguments2() => _returnSecond(0, 0.5); /*member: _returnSecond:[exact=JSNumNotInt]*/ _returnSecond(/*[exact=JSUInt31]*/ a, /*[exact=JSNumNotInt]*/ b) => b; //////////////////////////////////////////////////////////////////////////////// /// A static method that has an optional parameter with no explicit default /// value. Only one call site with no arguments. //////////////////////////////////////////////////////////////////////////////// /*member: staticCallWithOptionalArguments1:[null]*/ staticCallWithOptionalArguments1() => _returnDefaultNull(); /*member: _returnDefaultNull:[null]*/ _returnDefaultNull([/*[null]*/ a]) => a; //////////////////////////////////////////////////////////////////////////////// /// A static method that has an optional parameter with an explicit default /// value of `null`. Only one call site with no arguments. //////////////////////////////////////////////////////////////////////////////// /*member: staticCallWithOptionalArguments2:[null]*/ staticCallWithOptionalArguments2() => _returnDefaultNullExplicit(); /*member: _returnDefaultNullExplicit:[null]*/ _returnDefaultNullExplicit([/*[null]*/ a = null]) => a; //////////////////////////////////////////////////////////////////////////////// /// A static method that has an optional parameter. Only one call site with an /// explicit argument. //////////////////////////////////////////////////////////////////////////////// /*member: staticCallWithOptionalArguments3:[exact=JSUInt31]*/ staticCallWithOptionalArguments3() => _returnDefaultNullCalled(0); /*member: _returnDefaultNullCalled:[exact=JSUInt31]*/ _returnDefaultNullCalled([/*[exact=JSUInt31]*/ a]) => a; //////////////////////////////////////////////////////////////////////////////// /// A static method that has an optional parameter. Two call sites, one /// with an explicit argument and one with no arguments. //////////////////////////////////////////////////////////////////////////////// /*member: staticCallWithOptionalArguments4a:[null|exact=JSUInt31]*/ staticCallWithOptionalArguments4a() => _returnDefaultNullCalledTwice(); /*member: staticCallWithOptionalArguments4b:[null|exact=JSUInt31]*/ staticCallWithOptionalArguments4b() => _returnDefaultNullCalledTwice(0); /*member: _returnDefaultNullCalledTwice:[null|exact=JSUInt31]*/ _returnDefaultNullCalledTwice([/*[null|exact=JSUInt31]*/ a]) => a; //////////////////////////////////////////////////////////////////////////////// /// A static method that has an optional parameter with a default value of `0`. /// Only one call site with no arguments. //////////////////////////////////////////////////////////////////////////////// /*member: staticCallWithOptionalArguments5:[exact=JSUInt31]*/ staticCallWithOptionalArguments5() => _returnDefaultZero(); /*member: _returnDefaultZero:[exact=JSUInt31]*/ _returnDefaultZero([/*[exact=JSUInt31]*/ a = 0]) => a; //////////////////////////////////////////////////////////////////////////////// /// A static method that has an optional parameter with a default value of `0`. /// Only one call site with an argument of a different type. //////////////////////////////////////////////////////////////////////////////// /*member: staticCallWithOptionalArguments6:[exact=JSNumNotInt]*/ staticCallWithOptionalArguments6() => _returnDefaultZeroCalled(0.5); /*member: _returnDefaultZeroCalled:[exact=JSNumNotInt]*/ _returnDefaultZeroCalled([/*[exact=JSNumNotInt]*/ a = 0]) => a; //////////////////////////////////////////////////////////////////////////////// /// A static method that has a named parameter with a default value of `0`. /// Only one call site with no arguments. //////////////////////////////////////////////////////////////////////////////// /*member: staticCallWithNamedArguments1:[exact=JSUInt31]*/ staticCallWithNamedArguments1() => _returnNamedDefaultZero(); /*member: _returnNamedDefaultZero:[exact=JSUInt31]*/ _returnNamedDefaultZero({/*[exact=JSUInt31]*/ a: 0}) => a; //////////////////////////////////////////////////////////////////////////////// /// A static method that has a named parameter with a default value of `0`. /// Only one call site with an argument of a different type. //////////////////////////////////////////////////////////////////////////////// /*member: staticCallWithNamedArguments2:[exact=JSNumNotInt]*/ staticCallWithNamedArguments2() => _returnNamedDefaultZeroCalled(a: 0.5); /*member: _returnNamedDefaultZeroCalled:[exact=JSNumNotInt]*/ _returnNamedDefaultZeroCalled({/*[exact=JSNumNotInt]*/ a: 0}) => a; //////////////////////////////////////////////////////////////////////////////// /// A static method that has a named parameter. Two call sites, one with an /// explicit argument and one with no arguments. //////////////////////////////////////////////////////////////////////////////// /*member: staticCallWithNamedArguments3a:[null|exact=JSNumNotInt]*/ staticCallWithNamedArguments3a() => _returnNamedNullCalledTwice(); /*member: staticCallWithNamedArguments3b:[null|exact=JSNumNotInt]*/ staticCallWithNamedArguments3b() => _returnNamedNullCalledTwice(a: 0.5); /*member: _returnNamedNullCalledTwice:[null|exact=JSNumNotInt]*/ _returnNamedNullCalledTwice({/*[null|exact=JSNumNotInt]*/ a}) => a; //////////////////////////////////////////////////////////////////////////////// /// Call an uninitialized top level field. //////////////////////////////////////////////////////////////////////////////// /*member: _field1:[null]*/ dynamic _field1; /*member: invokeStaticFieldUninitialized:[empty]*/ invokeStaticFieldUninitialized() => _field1(); //////////////////////////////////////////////////////////////////////////////// /// Call a top level field initialized to a tear-off of a top level method. //////////////////////////////////////////////////////////////////////////////// /*member: _method1:[exact=JSUInt31]*/ _method1() => 42; /*member: _field2:[subclass=Closure]*/ dynamic _field2 = _method1; /*member: invokeStaticFieldTearOff:[null|subclass=Object]*/ invokeStaticFieldTearOff() => _field2(); //////////////////////////////////////////////////////////////////////////////// /// Call a top level field initialized to a tear-off of a top level method. //////////////////////////////////////////////////////////////////////////////// /*member: _method5:Value([exact=JSString], value: "")*/ String _method5() => ''; /*member: _field5:[subclass=Closure]*/ String Function() _field5 = _method5; /*member: invokeStaticTypedFieldTearOff:[null|exact=JSString]*/ invokeStaticTypedFieldTearOff() => _field5(); //////////////////////////////////////////////////////////////////////////////// /// Call a top level field initialized to a tear-off of a top level method /// taking one argument. //////////////////////////////////////////////////////////////////////////////// /*member: _method2:[exact=JSUInt31]*/ _method2(/*[exact=JSUInt31]*/ o) => 42; /*member: _field3:[subclass=Closure]*/ dynamic _field3 = _method2; /*member: invokeStaticFieldTearOffParameters:[null|subclass=Object]*/ invokeStaticFieldTearOffParameters() => _field3(42); //////////////////////////////////////////////////////////////////////////////// /// Call a top level getter returning a tear-off of a top level method. //////////////////////////////////////////////////////////////////////////////// /*member: _method3:[exact=JSUInt31]*/ _method3() => 42; /*member: _getter1:[subclass=Closure]*/ get _getter1 => _method3; /*member: invokeStaticGetterTearOff:[null|subclass=Object]*/ invokeStaticGetterTearOff() => _getter1(); //////////////////////////////////////////////////////////////////////////////// /// Call a typed top level getter returning a tear-off of a top level method. //////////////////////////////////////////////////////////////////////////////// /*member: _method6:[exact=JSUInt31]*/ int _method6() => 0; /*member: _field7:[subclass=Closure]*/ int Function() _field7 = _method6; /*member: _getter3:[subclass=Closure]*/ int Function() get _getter3 => _field7; /*member: invokeStaticTypedGetterTearOff:[null|subclass=JSInt]*/ invokeStaticTypedGetterTearOff() => _getter3(); //////////////////////////////////////////////////////////////////////////////// /// Calls to a generic static method whose return type depend upon the type /// arguments. //////////////////////////////////////////////////////////////////////////////// /*member: _method4:Union([exact=JSString], [exact=JSUInt31])*/ T _method4(T /*Union([exact=JSString], [exact=JSUInt31])*/ t) => t; /*member: invokeStaticGenericMethod1:[exact=JSUInt31]*/ invokeStaticGenericMethod1() => _method4(0); /*member: invokeStaticGenericMethod2:[exact=JSString]*/ invokeStaticGenericMethod2() => _method4(''); //////////////////////////////////////////////////////////////////////////////// /// Calls to a generic static method whose return type depend upon the type /// arguments. //////////////////////////////////////////////////////////////////////////////// /*member: _getter2:[subclass=Closure]*/ T Function(T) get _getter2 => _method4; /*member: invokeStaticGenericGetter1:[null|subclass=JSInt]*/ invokeStaticGenericGetter1() => _getter2(0); /*member: invokeStaticGenericGetter2:[null|exact=JSString]*/ invokeStaticGenericGetter2() => _getter2(''); //////////////////////////////////////////////////////////////////////////////// /// Calls to a generic static method whose return type depend upon the type /// arguments. //////////////////////////////////////////////////////////////////////////////// /*member: _field4:[subclass=Closure]*/ T Function(T) _field4 = _method4; /*member: invokeStaticGenericField1:[null|subclass=JSInt]*/ invokeStaticGenericField1() => _field4(0); /*member: invokeStaticGenericField2:[null|exact=JSString]*/ invokeStaticGenericField2() => _field4('');