# C# Language Design Meeting for September 4th, 2024

## Agenda

- [Triage (no milestone)](#triage-no-milestone)
    - [Type inference using method group natural type](#type-inference-using-method-group-natural-type)
    - [Collection Expressions Next (C#13 and beyond)](#collection-expressions-next-c13-and-beyond)
    - [Dictionary expressions](#dictionary-expressions)
    - [Extending patterns to "as"](#extending-patterns-to-as)
    - [`params in` parameters](#params-in-parameters)
- [Triage (working set)](#triage-working-set)
    - [Only Allow Lexical Keywords in the Language](#only-allow-lexical-keywords-in-the-language)
    - [Permit variable declarations under disjunctive patterns](#permit-variable-declarations-under-disjunctive-patterns)
    - [CallerCharacterNumberAttribute](#callercharacternumberattribute)
    - [`Task<T>` nullability covariance](#taskt-nullability-covariance)
    - [Nullable analysis of LINQ queries](#nullable-analysis-of-linq-queries)

## Quote of the Day

- "The power I have is that I get to interpret"

## Discussion

### Triage (no milestone)

Today we triaged our championed issues without milestones, and started going through our working set.

#### Type inference using method group natural type

Issue: https://github.com/dotnet/csharplang/issues/7687

We need to investigate and make sure we didn't intentionally not do this in C# 10. Once we figure that out, we think it can to into Any Time. Until then, Needs More Work.

#### Collection Expressions Next (C#13 and beyond)

Issue: https://github.com/dotnet/csharplang/issues/7913

This is an epic tracking multiple smaller improvements, and the champion is currently on vacation so we can't talk through all the individual things. We'll come back when the issue
champion is back from vacation.

#### Dictionary expressions

Issue: https://github.com/dotnet/csharplang/issues/7822

We've actively worked on this in the past year and continue to think about it. Working set.

#### Extending patterns to "as"

Issue: https://github.com/dotnet/csharplang/issues/8210

We don't like that this would collapse the success and failure branches of an `is` into _null_ and _not null_, that would then need to be checked again to actually use the value; part
of the point of `is` is to get rid of that type of code. We think the expanded versions of the examples are more readable. This proposal is rejected.

#### `params in` parameters

Issue: https://github.com/dotnet/csharplang/issues/8301

There's some interesting design work here around `ref struct`s that would push us to further expand our lifetime tracking, but we're not sure that this issue, by itself, would meet
the bar of doing that work. We don't think that it's a bad idea to add, particularly if we start by blocking `ref struct`s from participating, so we'll put this in the working set.

### Triage (working set)

Next, we started going through our working set issues to see if there's anything we should pull out. We didn't get through the whole thing; we stopped after 3590. The notes below
only include issues that we decided to change something about.

#### Only Allow Lexical Keywords in the Language

Issue: https://github.com/dotnet/csharplang/issues/4460

This issue was a forcing function to get us to think about breaking changes. We've thought about breaking changes, and our approach to `field`, while breaking, is significantly less
breaking than this issue proposes. We may pull it out of our back pocket in a future release where we're more comfortable with breaking changes in general, but until then, this is
moved to the backlog.

#### Permit variable declarations under disjunctive patterns

Issue: https://github.com/dotnet/csharplang/issues/4018

We do still want this feature, but aren't doing any active design work on it right now. Therefore, we'll move it to the backlog.

#### CallerCharacterNumberAttribute

Issue: https://github.com/dotnet/csharplang/issues/3992

This was a proposal for how we might implement interceptors. We don't plan on doing this, this proposal is rejected.

#### `Task<T>` nullability covariance

Issue: https://github.com/dotnet/csharplang/issues/3950

We do still want this feature, but aren't doing any active design work on it right now. Therefore, we'll move it to the backlog.

#### Nullable analysis of LINQ queries

Issue: https://github.com/dotnet/csharplang/issues/3951

We do still want this feature, but aren't doing any active design work on it right now. Therefore, we'll move it to the backlog.
