Type Checking

A Type-level Ruby Interpreter for Testing and Understanding

We propose a type-level abstract interpreter for Ruby 3's static analysis. This interpreter runs normal (i.e., non-type-annotated) Ruby programs in "type" level: each variable has only a type instead of a value. It reports a possible type-error bug, e.g., attempting to call a unknown method or to pass an invalid type argument during the interpretation. By recording all method definitions and calls, it also creates a summary of the program structure in type signature format. This is useful to understand the code, and can be also used as a prototype of type definition for external type checkers.

RubyKaigi 2019 https://rubykaigi.org/2019/presentations/mametter.html#apr18

RubyKaigi 2019