db-late バッジ補正: ドキュメント追加が遅かった 56 エントリに since を明示#3282
Conversation
メソッド単位 since バッジは DB 上の初出版から自動計算されるため、 ドキュメント追加が実際の導入より遅いと、バッジが実際より遅い版を 表示する(tools/method-versions/mismatch-report.md の db-late 分類)。 凍結 DB(2.7.0 以前)は再生成されないため、rurema#3256 と同方式で明示 {: since=} 属性により補正する。 - {: since=""}(バッジ非表示)…昔から public な継承メソッドで呼び出せた エントリ(Array#all?/max、Range#to_a、各クラスの inspect/==/hash 等)。 rurema#3256 の collect/any? と同じ方針 - 実値付き …クラス自体の導入(Complex/Rational=1.9.1 等)や機能新設 (positive?/negative?=2.3.0、deconstruct=2.7.0 等)がゲートになるもの。 全値を旧版 Ruby(all-ruby)実機で呼び出し確認済み トリアージで修正不要と確定した 8 件(private 継承の誤検出 3・既存 ゲートの帰結 2・Complex#<=> の undef 1・要人間判断 2)と、 explicit-wrong 4 件が誤検出だった訂正を mismatch-report.md に追記。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
znz
left a comment
There was a problem hiding this comment.
メソッドごとの since/until はメソッド名のみを基準として引数の違いは考慮しないという方針だったはずなので、 KeyError.new についてはそのままで良いはずです。
(キーワード引数化などの signature ごとでわけるなら、対応が必要なメソッドは他にもたくさんありそうです。)
znz さんのレビュー指摘(rurema#3282)対応。当初これらを継承で常時呼べるとして {: since=""} にしたが、実際にはメソッド固有のバージョン事情があり、 バッジまたは本文で明示すべきだった(実測 all-ruby で確認): - ENV.freeze: Ruby 2.7 で TypeError を発生させる自クラス定義が追加された (2.6 以前は例外なし)。{: since="2.7.0"} に修正し本文にも明記 - ENV.clone: 2.6〜3.1 は動作するが Ruby 3.2 から複製自体ができず TypeError になる。本文に明記({: since="" のまま}) - NilClass#=~: Object#=~ が deprecated になった Ruby 2.6 で追加された (Object#=~ は 3.2 で削除)。{: since="2.6.0"} に修正し本文にも経緯を明記 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
レビューありがとうございます。3 件ともご指摘のとおりでした。継承で常時呼べることを重視して
なお同じ bitclust のミニ描画で 3 件のバッジ・本文が正しく描画されること、 🤖 Generated with Claude Code |
znz さんの追加インラインレビュー・review(rurema#3282)対応: - ENV.clone: 3.2 以降は常に TypeError で返り値が無いため、#@SInCE 3.2 で シグネチャの返り値を -> () に分岐(それ以前は -> object)。znz さん提案の形 - NilClass#=~: 本文の [m:Object#=~] は Object#=~ が 3.2 で削除済みのため 3.2 以降のページでリンク切れになる。平文(コードスパン)に変更 - KeyError.new: since はメソッド名基準・引数差は考慮しないという方針に従い {: since="1.9.1"}(KeyError クラス導入版)を付与。receiver:/key: の キーワード版が 2.6 なのは方針上バッジに反映しない - Object#initialize_clone: 同方針で {: since="1.9.2"}(導入版)を付与。 freeze: キーワード(3.0)は反映しない。姉妹の initialize_dup と揃えた いずれも all-ruby 実機で版を確認済み。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
追加のレビューありがとうございます。すべて反映しました(コミット 2902f88)。 インラインの 2 件
|
refs #3269
メソッド単位 since バッジは「本番 DB 17 版でエントリが最初に現れる版」から自動計算されるため、ドキュメントの追加が実際のメソッド導入より遅かったエントリは、バッジが実際より遅い版を表示してしまいます(#3274 の
tools/method-versions/mismatch-report.mdで db-late に分類した 92 件)。凍結 DB(2.7.0 以前)は再生成されないため、#3256 と同方式の明示{: since=}属性で 56 エントリ(28 ファイル・78 行) を補正します。内訳
{: since=""}(バッジ非表示)= 41 エントリ — 昔から public な継承メソッドとして呼び出せたもの(Array#all?/none?/one?/max/min/minmax、Range#to_a/min/max ほか、各クラスの inspect/==/eql?/hash/=~/=== 系)。バージョンバッジ算出の誤りを {: since=""} / {: since="X"} で補正する #3256 で collect/any? に適用したのと同じ方針です。全 56 件、旧版 Ruby(all-ruby の各版バイナリ)で「その版で実際に呼び出せる/前の版では呼び出せない」ことを確認済みです。
トリアージで「修正不要」と確定した 8 件(doc 変更なし)
#@sinceゲートの意図した帰結: ENV.dup(3.1)・Range#reverse_each(3.3){: since=}はメソッド名単位で全オーバーロードに共有されるため、基本形 1.9.1 とキーワード形 2.6.0 を切り分けられない)・Object#initialize_clone(freeze:キーワードが 3.0 新設)この経緯と、explicit-wrong 4 件(ARGF.class の print 系)が誤検出だった訂正を
tools/method-versions/mismatch-report.mdに正誤表として追記しています(compare.rb の既知の限界=可視性無視・undef 非検出なども記録)。確認
rake check_blank_lines/check_indent_in_samplecode通過### def)直後にあることを機械検証git mergeで確認済み🤖 Generated with Claude Code