You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
CMTK0003 misses a dropped Task.WhenEach of Result tasks #162
Found by the variant sweep of CMTK0003 before 2.3.0 (Variants/DroppedTaskShapes, the form "Task.WhenEach of two calls").
Problem
Task.WhenEach (.NET 9) over tasks of results the statement made, dropped as a statement, compiles with no CMTK0003. The tasks have run, and nobody reads their results:
Task.WhenEach(orders.CancelAsync(first),orders.CancelAsync(second));// no diagnosticawaitforeach(vardoneinTask.WhenEach(orders.CancelAsync(first),orders.CancelAsync(second))){}// CMTK0003, as before
Cause
WhenEach returns an IAsyncEnumerable<Task<Result<…>>>. DroppedOutcome treats a sequence as lazy, with nothing run yet, but WhenEach yields tasks it was given, which the statement made.
Release
2.2.0 code can contain the form. It ships in 2.3.0 under decision 0119, in the PR for #152, #157 and #159.
Fixed in #164 (into release/2.3.0), held by DroppedTaskVariantTests over Variants/DroppedTaskShapes and seeded. The Analyzers README and the changelog say what 2.3.0 reports; 2.2-writable forms ship under decision 0119.
Activity
fix: CMTK0003 reports assertions and results lost through Task's comb…
docs: decision 119, a gap an Error has found before the tag ships in …
CaffeinatedCoder commentedon Oct 29, 2026
Fixed in #164 (into
release/2.3.0), held byDroppedTaskVariantTestsoverVariants/DroppedTaskShapesand seeded. The Analyzers README and the changelog say what 2.3.0 reports; 2.2-writable forms ship under decision 0119.CaffeinatedCoder commentedon Oct 29, 2026
Fixed in #164, merged into
release/2.3.0(9878a6c).