++C++; // 未確認飛行 C ブログ

http://ufcpp.net/

ピックアップ Roslyn 3/29

leave a comment »

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?

Written by ufcpp

2015年3月29日 @ 22:57

カテゴリー: 未分類

コメントを残す