perf: avoid IEnumerable.FirstOrDefault() iterator alloc in TestGenericTypeResolver (original) (raw)

TUnit.Engine/Services/TestGenericTypeResolver.cs:265:

else if (arg0 is IEnumerable objEnum) { var first = objEnum.FirstOrDefault(); if (first != null) { sourceType = first.GetType(); } }

FirstOrDefault() on a non-list IEnumerable<object> allocates an enumerator. Replace with foreach { return; }:

foreach (var first in objEnum) { if (first != null) { sourceType = first.GetType(); } break; }

Same pattern as #6029 (CastHelper).

Why hot: Per generic-type inference during discovery when args are untyped enumerables.
TFM: No gating.

Related: #6029.