// 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.9 class Callable { call(x) { return "string"; } } class CallableGetter { get call => new Callable(); } main() { var closure = (x) => x; var int1 = closure(1); var int2 = closure.call(1); var int3 = closure.call.call(1); var int4 = closure.call.call.call(1); var callable = new Callable(); var string1 = callable(1); var string2 = callable.call(1); var string3 = callable.call.call(1); var string4 = callable.call.call.call(1); var callableGetter = new CallableGetter(); var string5 = callableGetter(1); var string6 = callableGetter.call(1); var string7 = callableGetter.call.call(1); var string8 = callableGetter.call.call.call(1); var nothing1 = closure(); var nothing2 = closure.call(); var nothing3 = closure.call.call(); var nothing4 = closure.call.call.call(); var nothing5 = callable(); var nothing6 = callable.call(); var nothing7 = callable.call.call(); var nothing8 = callable.call.call.call(); var nothing9 = callableGetter(); var nothing10 = callableGetter.call(); var nothing11 = callableGetter.call.call(); var nothing12 = callableGetter.call.call.call(); } var closure = (x) => x; var int1 = closure(1); var int2 = closure.call(1); var int3 = closure.call.call(1); var int4 = closure.call.call.call(1); var callable = new Callable(); var string1 = callable(1); var string2 = callable.call(1); var string3 = callable.call.call(1); var string4 = callable.call.call.call(1); var callableGetter = new CallableGetter(); var string5 = callableGetter(1); var string6 = callableGetter.call(1); var string7 = callableGetter.call.call(1); var string8 = callableGetter.call.call.call(1); var nothing1 = closure(); var nothing2 = closure.call(); var nothing3 = closure.call.call(); var nothing4 = closure.call.call.call(); var nothing5 = callable(); var nothing6 = callable.call(); var nothing7 = callable.call.call(); var nothing8 = callable.call.call.call(); var nothing9 = callableGetter(); var nothing10 = callableGetter.call(); var nothing11 = callableGetter.call.call(); var nothing12 = callableGetter.call.call.call();