コンテンツにスキップ

推論型の確認

Rigorの解析はデフォルトでは不可視です——診断を報告するときだけ口を開きます。エンジンが式に割り当てた型を確認したいときは、2つのソースヘルパーと2つのCLIコマンドの4つのツールがあります。

dump_type — ソースから型を出力する

Section titled “dump_type — ソースから型を出力する”

dump_type(expr)はRigorにinfo重要度のdump.type診断を発行させ、exprの推論型を表示します。実行時にはno-opでexprをそのまま返すため、デバッグ中に残したり自由に散りばめても安全です。

require "rigor/testing"
include Rigor::Testing
dump_type(1 + 2) # rigor reports: dump.type — Constant<3>

Rigorはコールがinclude Rigor::Testingの後にdump_type(…)として書かれている場合、または完全修飾のRigor::Testing.dump_type(…) / Rigor.dump_type(…)として書かれている場合に認識します。

assert_type — ソースで型を固定する

Section titled “assert_type — ソースで型を固定する”

assert_type("TypeString", expr)exprの推論型をリテラル型文字列と比較します。不一致の場合、Rigorはerror重要度のassert.type-mismatch診断を発行します。一致する場合は何も出力しません。dump_typeと同様に実行時はexprをそのまま返します。

assert_type("Constant<3>", 1 + 2) # silent — matches
assert_type("Integer", 1 + 2) # assert.type-mismatch

型文字列はエンジンの短い表示形式と照合されます。assert_typeはハンドブックの例を正確に保つ方法であり、プロジェクト自身のテストソースに保持できるリグレッションチェックとしても機能します。

rigor annotate FILEはファイル全体を再表示し、各行に評価する式の型を末尾の#=> dump_type:コメントとしてタグ付けします:

two = 1 + 1 #=> dump_type: 2
name = gets #=> dump_type: String | nil

ファイルを概観する最速の方法です。アノテーションは冪等です——再実行すると前のコメントを積み重ねる代わりに置き換えます。ttyの場合は出力がシンタックスハイライトされます。--no-color(およびNO_COLOR環境変数)でカラーを無効化できます。

1つの式の型だけが必要な場合——通常は診断が発火した/しなかった理由を追いかけているとき——単一位置をクエリします:

Terminal window
rigor type-of lib/example.rb:12:8

--format=jsonはツール向けのマシン可読な結果を出力します。これはエディタ統合がホバー時に回答するのと同じクエリです。

したいこと使うもの
シェルから一つの式の型を確認したいrigor type-of
ファイルの全行を概観したいrigor annotate
解析途中にコンテキスト内で型を出力したいdump_type
型をアサートしてリグレッションチェックしたいassert_type

© 2026 TypedDuck. Licensed under CC BY-SA 4.0.