--- !ruby/object:RI::ClassDescription 
attributes: 
- !ruby/object:RI::Attribute 
  comment: 
  - !ruby/struct:SM::Flow::P 
    body: Environment containing local variables
  name: env
  rw: R
- !ruby/object:RI::Attribute 
  comment: 
  - !ruby/struct:SM::Flow::P 
    body: Function table
  name: functions
  rw: R
- !ruby/object:RI::Attribute 
  comment: 
  - !ruby/struct:SM::Flow::P 
    body: The global environment contains global variables and constants.
  name: genv
  rw: R
class_methods: 
- !ruby/object:RI::MethodSummary 
  name: process
- !ruby/object:RI::MethodSummary 
  name: translate
comment: 
- !ruby/struct:SM::Flow::P 
  body: TypeChecker inferences types for sexps using type unification.
- !ruby/struct:SM::Flow::P 
  body: TypeChecker expects sexps rewritten with Rewriter, and outputs TypedSexps.
- !ruby/struct:SM::Flow::P 
  body: Nodes marked as 'unsupported' do not do correct type-checking of all the pieces of the node. They generate possibly incorrect output, that is all.
constants: []

full_name: TypeChecker
includes: []

instance_methods: 
- !ruby/object:RI::MethodSummary 
  name: bootstrap
- !ruby/object:RI::MethodSummary 
  name: process_and
- !ruby/object:RI::MethodSummary 
  name: process_arglist
- !ruby/object:RI::MethodSummary 
  name: process_args
- !ruby/object:RI::MethodSummary 
  name: process_array
- !ruby/object:RI::MethodSummary 
  name: process_attrasgn
- !ruby/object:RI::MethodSummary 
  name: process_begin
- !ruby/object:RI::MethodSummary 
  name: process_block
- !ruby/object:RI::MethodSummary 
  name: process_block_arg
- !ruby/object:RI::MethodSummary 
  name: process_block_pass
- !ruby/object:RI::MethodSummary 
  name: process_call
- !ruby/object:RI::MethodSummary 
  name: process_class
- !ruby/object:RI::MethodSummary 
  name: process_colon2
- !ruby/object:RI::MethodSummary 
  name: process_colon3
- !ruby/object:RI::MethodSummary 
  name: process_const
- !ruby/object:RI::MethodSummary 
  name: process_cvar
- !ruby/object:RI::MethodSummary 
  name: process_cvasgn
- !ruby/object:RI::MethodSummary 
  name: process_dasgn_curr
- !ruby/object:RI::MethodSummary 
  name: process_defined
- !ruby/object:RI::MethodSummary 
  name: process_defn
- !ruby/object:RI::MethodSummary 
  name: process_dstr
- !ruby/object:RI::MethodSummary 
  name: process_dvar
- !ruby/object:RI::MethodSummary 
  name: process_ensure
- !ruby/object:RI::MethodSummary 
  name: process_false
- !ruby/object:RI::MethodSummary 
  name: process_gasgn
- !ruby/object:RI::MethodSummary 
  name: process_gvar
- !ruby/object:RI::MethodSummary 
  name: process_hash
- !ruby/object:RI::MethodSummary 
  name: process_iasgn
- !ruby/object:RI::MethodSummary 
  name: process_if
- !ruby/object:RI::MethodSummary 
  name: process_iter
- !ruby/object:RI::MethodSummary 
  name: process_ivar
- !ruby/object:RI::MethodSummary 
  name: process_lasgn
- !ruby/object:RI::MethodSummary 
  name: process_lit
- !ruby/object:RI::MethodSummary 
  name: process_lvar
- !ruby/object:RI::MethodSummary 
  name: process_nil
- !ruby/object:RI::MethodSummary 
  name: process_not
- !ruby/object:RI::MethodSummary 
  name: process_op_asgn_or
- !ruby/object:RI::MethodSummary 
  name: process_or
- !ruby/object:RI::MethodSummary 
  name: process_resbody
- !ruby/object:RI::MethodSummary 
  name: process_rescue
- !ruby/object:RI::MethodSummary 
  name: process_return
- !ruby/object:RI::MethodSummary 
  name: process_scope
- !ruby/object:RI::MethodSummary 
  name: process_self
- !ruby/object:RI::MethodSummary 
  name: process_splat
- !ruby/object:RI::MethodSummary 
  name: process_str
- !ruby/object:RI::MethodSummary 
  name: process_super
- !ruby/object:RI::MethodSummary 
  name: process_true
- !ruby/object:RI::MethodSummary 
  name: process_while
- !ruby/object:RI::MethodSummary 
  name: process_yield
- !ruby/object:RI::MethodSummary 
  name: translate
name: TypeChecker
superclass: SexpProcessor
