Skip to content

Test plan for "improved definite assignment" #51463

@RikkiGibson

Description

@RikkiGibson

Championed issue: dotnet/csharplang#4465
Spec: https://github.com/dotnet/csharplang/blob/main/proposals/csharp-10.0/improved-definite-assignment.md#specification

  • definite assignment and nullability improvements for ??
    • <null-conditional> ?? expr_second
  • definite assignment and nullability improvements for ? :
    • expr_cond ? expr_true : expr_false can result in conditional state
  • definite assignment and nullability improvements for ==
    • <null-conditional> == <null-constant>
    • <null-conditional> == <not-null>
    • expr == <constant-true>
    • expr == <constant-false>
    • corresponding rules for !=
    • predefined vs. user-defined == operators
    • DataFlowsOut API needs tests to demonstrate that the usage of Meet() between ==/!= operands is sound
  • definite assignment and nullability improvements for is
    • <null-conditional> is <not-null-only-matching-pattern>
    • <null-conditional> is <null-only-matching-pattern>
    • <null-conditional> is <true-only-matching-pattern>
    • <null-conditional> is <false-only-matching-pattern>
  • true, false operators

Needs some discussion:

  • definite assignment and nullability improvements for switch
  • definite assignment and nullability improvements for relational operators (>, ...)

Productivity

  • change x != null && x?.TryGetValue(out y) to x?.TryGetValue(out y) == true

Metadata

Metadata

Type

No type

Projects

Status

Done Umbrellas

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions