@@ -319,16 +319,20 @@ public static decimal Max(this IEnumerable<decimal> source)
319
319
320
320
comparer ??= Comparer < TSource > . Default ;
321
321
322
+ // TODO https://github.com/dotnet/csharplang/discussions/6308: Update this to use generic constraint bridging if/when available.
322
323
if ( typeof ( TSource ) == typeof ( byte ) && comparer == Comparer < TSource > . Default ) return ( TSource ) ( object ) MinMaxInteger < byte , MaxCalc < byte > > ( ( IEnumerable < byte > ) source ) ;
323
324
if ( typeof ( TSource ) == typeof ( sbyte ) && comparer == Comparer < TSource > . Default ) return ( TSource ) ( object ) MinMaxInteger < sbyte , MaxCalc < sbyte > > ( ( IEnumerable < sbyte > ) source ) ;
324
325
if ( typeof ( TSource ) == typeof ( ushort ) && comparer == Comparer < TSource > . Default ) return ( TSource ) ( object ) MinMaxInteger < ushort , MaxCalc < ushort > > ( ( IEnumerable < ushort > ) source ) ;
325
326
if ( typeof ( TSource ) == typeof ( short ) && comparer == Comparer < TSource > . Default ) return ( TSource ) ( object ) MinMaxInteger < short , MaxCalc < short > > ( ( IEnumerable < short > ) source ) ;
327
+ if ( typeof ( TSource ) == typeof ( char ) && comparer == Comparer < TSource > . Default ) return ( TSource ) ( object ) MinMaxInteger < char , MaxCalc < char > > ( ( IEnumerable < char > ) source ) ;
326
328
if ( typeof ( TSource ) == typeof ( uint ) && comparer == Comparer < TSource > . Default ) return ( TSource ) ( object ) MinMaxInteger < uint , MaxCalc < uint > > ( ( IEnumerable < uint > ) source ) ;
327
329
if ( typeof ( TSource ) == typeof ( int ) && comparer == Comparer < TSource > . Default ) return ( TSource ) ( object ) MinMaxInteger < int , MaxCalc < int > > ( ( IEnumerable < int > ) source ) ;
328
330
if ( typeof ( TSource ) == typeof ( ulong ) && comparer == Comparer < TSource > . Default ) return ( TSource ) ( object ) MinMaxInteger < ulong , MaxCalc < ulong > > ( ( IEnumerable < ulong > ) source ) ;
329
331
if ( typeof ( TSource ) == typeof ( long ) && comparer == Comparer < TSource > . Default ) return ( TSource ) ( object ) MinMaxInteger < long , MaxCalc < long > > ( ( IEnumerable < long > ) source ) ;
330
332
if ( typeof ( TSource ) == typeof ( nuint ) && comparer == Comparer < TSource > . Default ) return ( TSource ) ( object ) MinMaxInteger < nuint , MaxCalc < nuint > > ( ( IEnumerable < nuint > ) source ) ;
331
333
if ( typeof ( TSource ) == typeof ( nint ) && comparer == Comparer < TSource > . Default ) return ( TSource ) ( object ) MinMaxInteger < nint , MaxCalc < nint > > ( ( IEnumerable < nint > ) source ) ;
334
+ if ( typeof ( TSource ) == typeof ( Int128 ) && comparer == Comparer < TSource > . Default ) return ( TSource ) ( object ) MinMaxInteger < Int128 , MaxCalc < Int128 > > ( ( IEnumerable < Int128 > ) source ) ;
335
+ if ( typeof ( TSource ) == typeof ( UInt128 ) && comparer == Comparer < TSource > . Default ) return ( TSource ) ( object ) MinMaxInteger < UInt128 , MaxCalc < UInt128 > > ( ( IEnumerable < UInt128 > ) source ) ;
332
336
333
337
TSource ? value = default ;
334
338
using ( IEnumerator < TSource > e = source . GetEnumerator ( ) )
0 commit comments