Class: Rigor::CLI::TraceCommand

Inherits:
Command
  • Object
show all
Defined in:
lib/rigor/cli/trace_command.rb

Overview

Executes the rigor trace command: re-runs the inference engine over one file under Inference::FlowTracer and replays the recorded event stream — scope binds, union formation, method dispatch, and (with --verbose) every expression enter/result — as a step-through terminal animation. A teaching probe: it shows HOW Rigor arrives at a type, where rigor type-of shows only the answer.

The tracer is observational; this command never changes what rigor check would infer for the same file.

Constant Summary collapse

USAGE =
"Usage: rigor trace [options] FILE"
DEFAULT_KINDS =

Default frame kinds: the three teachable moments. :enter/:result add one frame per literal and drown the signal; --verbose opts into them.

%i[bind union dispatch].freeze
VERBOSE_KINDS =
(%i[enter result] + DEFAULT_KINDS).freeze

Instance Method Summary collapse

Methods inherited from Command

#initialize

Constructor Details

This class inherits a constructor from Rigor::CLI::Command

Instance Method Details

#runInteger

Returns CLI exit status.

Returns:

  • (Integer)

    CLI exit status.



33
34
35
36
37
38
39
40
41
42
43
# File 'lib/rigor/cli/trace_command.rb', line 33

def run
  options = parse_options
  file = @argv.first
  if file.nil? || @argv.size != 1
    @err.puts(USAGE)
    return CLI::EXIT_USAGE
  end
  return 1 unless file_exists?(file)

  execute(file: file, options: options)
end