7月のデザイン ミーティング議事録が2件。

このうち、supersedes機能については前回少し触れましたが。

参照戻り値/ローカル変数とパターン マッチング、試験的実装始めました

C# Design Notes for Sep 1, 2015 #5233

何分2か月前の議事録なので、実はもうだいぶ実装が進んでいるんですが(関連する pull-requestが結構すでに merged な状態)、以下の2つの機能について、プロトタイプ実装を進めるにあたっての設計上の決定についての話が書かれています。

  • 参照戻り値/ローカル変数 (ref returns and ref locals)
  • パターン マッチング

これがこのまま最終盤になるという保証はまったくないものの、プロトタイプ実装を試しにやってみることでわかることもいろいろあるはず。とのこと。

参照戻り値/ローカル変数

参照を返すにあたって、参照先が消えて不正なアドレスを刺すような状態になってはいけないので、返せるものは限定する必要があります。

どういう場合に安全(参照先が不正になる可能性ない)で、どういう場合が危険(その可能性がある)かを説明。C#としては、当然、安全な場合のみを認める方針。

パターン マッチング

現時点で以下のような仕様が書かれています。

  • 定数パターン マッチングで、整数型はフレキシブル(互換性のある型なら暗黙的に型変換)、浮動小数点はそこまでしない
  • e is > 3 みたいな比較は今のところない。たぶんあとで議論
  • パターン式中で定義した変数は、その直近のブロック内、else 除く
  • 参照ローカル変数は再代入不可
  • deconstruction はまだやってないけど興味深い「今後のトピック」
  • レコード型もこのプロトタイプにはまだ入ってない

nameofの拡張、ブランチの意味、supersedes

C# Design Notes for Sep 2, 2015 #5234

議題は3つ。

  • nameof の拡張
    • MyList<>.First みたいなopenなジェネリックを認めれるようにしようみたいは話
  • GitHub の Roslyn リポジトリのブランチについて
    • ブランチを切って新機能実装してるんだけど、(機能ごとにバラバラにある)各ブランチの実装をVSIX配布で試せるようにしたいとのこと
    • これができるようになったら、試したい機能だけを低リスクに試せるようになるはず(Visual Studio 拡張なので入れたり消したり自由)
  • supersedes