| // Copyright (c) 2018, 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. | |
| main() { | |
| directCall(); | |
| indirectCall(); | |
| instanceTearOff(); | |
| localCall(); | |
| instantiatedCall(); | |
| } | |
| /*member: _directCall:apply*/ | |
| _directCall() {} | |
| /*member: directCall:*/ | |
| void directCall() { | |
| Function.apply(_directCall, []); | |
| } | |
| /*member: _indirectCall:apply*/ | |
| _indirectCall() {} | |
| /*member: _indirectCallHelper:*/ | |
| _indirectCallHelper(f) => Function.apply(f, []); | |
| /*member: indirectCall:*/ | |
| void indirectCall() { | |
| _indirectCallHelper(_indirectCall); | |
| } | |
| /*member: Class.:*/ | |
| class Class { | |
| /*member: Class.instanceTearOff1:apply*/ | |
| instanceTearOff1() {} | |
| /*member: Class.instanceTearOff2:*/ | |
| instanceTearOff2() {} | |
| } | |
| /*member: _instanceTearOffHelper:*/ | |
| _instanceTearOffHelper(f) => Function.apply(f, []); | |
| instanceTearOff() { | |
| var c = Class(); | |
| _instanceTearOffHelper(c.instanceTearOff1); | |
| return c.instanceTearOff2; | |
| } | |
| localCall() { | |
| /*apply*/ | |
| local1() {} | |
| local2() {} | |
| local3() {} | |
| Function.apply(local1, []); | |
| local2(); | |
| return local3; | |
| } | |
| instantiatedCall() { | |
| /*apply*/ | |
| local1<T>(T t) {} | |
| local2<T>(T t) {} | |
| local3<T>(T t) {} | |
| Function(int) f1 = local1; | |
| Function(int) f2 = local2; | |
| Function(int) f3 = local3; | |
| Function.apply(f1, [0]); | |
| f2(0); | |
| return f3; | |
| } |