Niels は、README を更新し、AUTHORS での彼の名前のスペルミスを修正し、いくつかの C++ コマンドを CPP コメントに置き換えた小さなパッチを送信しました。g95_parent_procedure() というコメントアウトされたコードを削除してしまいました。また、ENTRY ステートメント内の g95_parent_procedure() への最後の呼び出しを最新のコードに置き換え、g95_parent_procedure() を完全に削除しました。
IA-32 のハードウェア ブレークポイント機能のおかげで、g95 のコア ダンプも修正しました。シンボルが元に戻されたときに、正式な引数リストが元に戻されず、解決中に災害が発生しました。問題は本当に奇妙でした。バグを実行したコードは次のとおりです。
サブルーチン foo(type)
type (dt) :: v
…
変数「type」はダミー変数として開始されます。つまり、仮引数として解決されます。型定義ステートメントは、問題が発生する前に :: まで取得するステートメント関数として解析されます。’type’ は、適切に解決されていない独自の仮引数リストで終了しました。解決中に、偽の仮引数リストが解決され、メモリが踏みつけられました。
他のテスト スイート ファイルで使用されている割り当てインターフェイスがないため、quad.f90 テスト スイート ファイルに追加するのに時間がかかりました。次に、割り当てインターフェイスが読み取りではスキップされていませんが、書き込みではスキップされていないことがわかりました。これにより、後続のインターフェイスも台無しになりました。
この後のバグは、インターフェイスが演算子に対して定義されているという事実であり、この場合、単項のマイナスとバイナリのマイナスを区別することは不可能です。インターフェースはすべて 1 つのリストに入り、後で間違ったリストが検索されます。
2月20日
Laurent さんは、TRANSPOSE() 組み込み関数がランク 2 の配列を返さなかったと報告しましたが、これは修正されました。
過去 2 日間の大きな変更がコミットされました。これらは、インターフェースがモジュールによってどのように書き込まれ、読み取られるか、およびインターフェースリストがどのように比較されるかを書き換えます。いくつかのインターフェース関連のサブルーチンが、module.c から、それらが属する interface.c に移動されました。ユーザー定義演算子または組み込み演算子のインターフェースを比較するための新しいサブルーチンもあります。これらの比較は、一般的な手続きとは異なります。これは、演算子のインターフェースがキーワード引数を使用できないためです。これにより、2 つのインターフェースがあいまいな参照を持つことが難しくなります。
この面では、物事は完全には完了していません。このようなインターフェイスは、インターフェイスが 1 つしかないかのように動作するはずです。実際には、それらは複数の名前空間に分散しているため、親の名前空間のインターフェイスを検索可能にし、あいまいさもチェックする必要があります。
一方、ミラースイートの現在の「最初のエラー」は、インターフェースとは何の関係もありません…