ゆなこんブログ

ゆなこんぴゅーたー (Yuna Computer) の公式ブログ

昔のVB.NETコンパイラがクラッシュしたコード

発掘

発掘したので公開。 以下のコードが、今は正しくコンパイルエラーになりますが、昔のとあるバージョンではコンパイラがIL出力時のエラーをはいて(クラッシュ)していました。

Module Module1
    Sub Main()
        Dim a = 0
        Const b As Double = a ' 本来は... error BC30059: 定数式が必要です。
    End Sub
End Module
vbc : モジュール 'ConsoleApplication.exe' の作成に失敗しました。
vbc : error BC36970: Failed to emit module 'ConsoleApplication.exe'.

これの厄介なところは、問題のあるコードの場所と原因を一切報告しないことです。 当時はまって、再現できる最小コードが上のコードとなりました。

今は

この記事の投稿時点のコンパイラバージョン。

> vbc -version
4.14.0-3.25412.6 (c167adef)

正しく場所と原因を報告します。 正しいコンパイルエラー(BC30059: 定数式が必要です。)が出力されます。

同様の報告

いくつかあるみたいですね。