// 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. // @dart = 2.7 /*spec.member: f1:deps=[method],direct,explicit=[f1.T*],needsArgs,needsInst=[]*/ /*prod.member: f1:deps=[method]*/ int f1(T a, T b, T c) => null; /*spec.member: f2:deps=[method],direct,explicit=[f2.S*,f2.T*],needsArgs,needsInst=[]*/ /*prod.member: f2:deps=[method]*/ int f2(T a, S b, S c) => null; /*spec.member: f3:deps=[method],direct,explicit=[f3.S*,f3.T*,f3.U*],needsArgs,needsInst=[]*/ /*prod.member: f3:deps=[method]*/ int f3(T a, S b, U c) => null; typedef int F1(R a, R b, R c); typedef int F2(R a, P b, P c); typedef int F3(R a, P b, Q c); /*spec.member: method:implicit=[method.X,method.Y,method.Z],indirect,needsArgs*/ method() { F1 c1; F2 c2; F3 c3; return () { c1 = f1; c2 = f2; c3 = f3; return c1 ?? c2 ?? c3; }; } main() { method(); }