ピックアップ Roslyn 3/29
C# Design Meeting Notes for Mar 10 and 17, 2015
https://github.com/dotnet/roslyn/issues/1648
議事録3/10, 17の2回分をまとめて1ページ投稿。この2回は、非null許容な参照型についての検討だったようです。
とれるであろう複数の選択肢について考察していますが、現時点での有力な選択肢は以下のとおり。
- string に対して nullable として string?、non-nullable として string! と書けるようにする
-
- 既存の string はそのどちらも明確化してない状態
- 内部的には属性を付ける実装になりそう
- 厳しくコンパイル エラーにするんじゃなくて、コード解析ベースのチェックになりそう
互換性を崩さないように作らないといけないので、妥協はせざるを得ない感じ。
.NET Core 対応
いくつか、.NET Core 対応用のpull-reqが出ていました。
https://github.com/dotnet/roslyn/pull/1571
https://github.com/dotnet/roslyn/pull/1623
以下のようなものへの依存を削ったそうです。
- バイナリ シリアライザー
- XmlResolver
- GetType(string, bool) とか Assembly.GetAssemblyName
- Encoding.Default
Warning Waves
https://github.com/dotnet/roslyn/issues/1580
警告の出し方もバージョン指定できる(“wave”を持たせる)ようにしない?という提案。
Roslyn になったことで、これまでよりもだいぶ詳細な警告出せるんだけど、警告を増やすってのは破壊的変更になる。「警告をエラー扱いする」オプションがあるんで、それを選択している人にとってはエラーと同じ。ということで、単純に警告を増やすのはリスクだそうです。
waveを持たせようという案は昔にも1度出ていたそうです。が、waveを持たせるよりも、警告1つ1つをon/offできる方がよいだろうし、そっちを実装する予定にしたので、waveを持つというアイディアはいったん止めた。でも、「警告1つ1つをon/off」はまだ実装できていないし、waveの方を再び考えてみる。という感じみたい。
Discussion – Patterns and Records
https://github.com/dotnet/roslyn/issues/1572
レコード型、パターン マッチングに関して、簡単な説明の後、公開質問がいくつか。質問は以下のようなもの。
- どのくらいパターン マッチングがほしい?
- 完備性のチェック(2/3のブログのcompletenessのところ参照)はした方がいい?
- 「型テスト」じゃなくて、タグを使うような実装もあり得るけども、どう?
- ↓どの型に対して、構文的なサポートがほしい?
- プリミティブ型やstring
- レコード型
- Nullable型
- プロパティを持ったオブジェクト
- 匿名型?
- 配列?
- List? Dictionary?
- タプル型?
- IEnumerable?
コメントを残す