Skip to content

CMTK0003 misses a dropped Task.WhenEach of Result tasks #162

Closed

Description

@CaffeinatedCoder

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 diagnostic
await foreach (var done in Task.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.

Activity

  1. added this to the 2.3.0 milestone on Oct 29, 2026
  2. added
    bugSomething isn't working
    silentCompiles or answers and does less than it appears to
    severity/lowCosmetic, message or documentation-level difference
    package/analyzersAffects CodoMetis.TypeKit.Analyzers
    on Oct 29, 2026
  3. CaffeinatedCoder commented on Oct 29, 2026

    @CaffeinatedCoder
    OwnerAuthor

    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.

  4. CaffeinatedCoder commented on Oct 29, 2026

    @CaffeinatedCoder
    OwnerAuthor

    Fixed in #164, merged into release/2.3.0 (9878a6c).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/option-resultOption, Result and their extensionsbugSomething isn't workingpackage/analyzersAffects CodoMetis.TypeKit.Analyzersseverity/lowCosmetic, message or documentation-level differencesilentCompiles or answers and does less than it appears to

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions