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