Skip to content

CMTK0008: report FullJoin's key selectors as the other joins' #273

Open

Description

@CaffeinatedCoder

Problem

CMTK0008 reports a join whose two key selectors unwrap value objects of different types, for Join, GroupJoin, LeftJoin and RightJoin (MixedValueComparisonAnalyzer.JoinNames). .NET 11 adds FullJoin on Enumerable, Queryable and AsyncEnumerable with the same outerKeySelector and innerKeySelector parameters, plus tuple-returning LeftJoin/RightJoin/FullJoin overloads. FullJoin isn't in the list, so a.FullJoin(b, o => o.OrderId.Value, c => c.CustomerId.Value, …) is silent.

Found while widening CMTK0009 to the outer joins (#261), which resolves the same joins through the shared LinqJoins helper. The tuple overloads already reach CMTK0008 through their names; FullJoin needs adding.

Change

Add FullJoin to CMTK0008's join names, and name it in the Analyzers README's CMTK0008 section and design/analyzers.md.

Test

A FullJoin row on each host in MixedValueComparisonAnalyzerTests, against a stub with the .NET 11 signatures as OuterJoinDefaultTests has, shown caught by removing the name.

Done when

The rows pass and are shown caught, and the README and design note name FullJoin.

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/value-objectsValue-object contracts and what the aspects generate for themenhancementNew feature or requestpackage/analyzersAffects CodoMetis.TypeKit.Analyzers

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions