3 // This test is used to test the type information flow between arguments
4 // in a generic method invocation, where:
6 // 1. We first infer the type of X from the first argument to F
8 // 2. We use this information to infer from the type of f1 and Func
9 // that X is a TimeSpan.
11 // 3. Use the X=String and Y=TimeSpan to infer the value for Z
16 public delegate TResult Func
<TArg0
, TResult
> (TArg0 arg0
);
19 static Z F
<X
,Y
,Z
>(X
value, Func
<X
,Y
> f1
, Func
<Y
,Z
> f2
)
21 return f2 (f1(value));
25 double d
= F("1:15:30", s
=> TimeSpan
.Parse(s
), t
=> t
.TotalSeconds
);
26 if (d
< 4529 || d
> 4531)