doctree icon indicating copy to clipboard operation
doctree copied to clipboard

<=> の返り値を訂正

Open scivola opened this issue 4 years ago • 2 comments

#2179 で各種クラスの <=> のメソッドシグニチャーで返り値の表記がバラバラであることが指摘されました。 この問題を issue 化します。

わりと多くの <=> メソッドが -1 | 0 | 1 | nil を返り値としますが,nil が抜けていたり(誤り;古い仕様のまま),Integer | nil だったり(誤りではないが,具体的に書きたい)です。

メソッドシグニチャーだけでなく,説明文や「RETURN」を書き直す必要があるメソッドも少なくないようです。

以下のリストは #2179 の GREP 検索の結果を整理したものです。 ただし,以下のようなものは省いています。

  • 現時点で既に修正プルリクエストができているもの
  • -1 | 0 | 1 | nil ではないが,現状が正しいもの
  • nodoc でコメントアウトされているもの(Gem::Requirement が該当)

-1 | 0 | 1 になっているもの

nil を返す場合があるかどうか,個別に確認する必要があります)

なお,X509__Name は other のスペルが間違っています。

Integer | nil になっているもの

Integer が本当に -101 なのかは個別に確認する必要があります)

Fixnum | nil になっているもの(Ruby 2.3 なので対処しない)

(Ruby 2.3 系まで)

Integer になっているもの

(返り値が本当に -101nil なのかは個別に確認する必要があります)

なお,上記の Rake::EarlyTime#<=> の返り値は ~-1 | nil が正しい(01 を返すことはない)のだと思います。~ 常に -1 です。

Fixnum になっているもの(Ruby 2.3 なので対処しない)

(Ruby 2.3 系まで)

1 | 0 | -1 | nil になっているもの

これは正しいのですが,他に合わせて -1 | 0 | 1 | nil の順序にしておくのがいいかと思います。

scivola avatar Feb 24 '20 04:02 scivola

Issue立てていただいてありがとうございます🙏

Fixnum / Bignum に関しては、2.3以下のドキュメントはすでに生成しておらず、コードを直したところで生成されるドキュメントに変化があるわけではないので、特に手を付けずに良いと思います。

pocke avatar Feb 24 '20 08:02 pocke

Ruby 2.3 以降だと思い込んでいました。今は Ruby 2.4 以降だけ考えればいいんですね。

scivola avatar Feb 24 '20 09:02 scivola