class TypeProf::Core::EscapeBox - typeprof: Ruby Standard Library Documentation

# class TypeProf::Core::EscapeBox

### Attributes

a_ret[R]
f_ret[R]

### Public Class Methods

new(node, genv, a_ret, f_ret) click to toggle source
Calls superclass method `TypeProf::Core::Box::new`

    # File typeprof-0.30.1/lib/typeprof/core/graph/box.rb, line 255
    def initialize(node, genv, a_ret, f_ret)
      super(node)
      @a_ret = a_ret.new_vertex(genv, node)
      @f_ret = f_ret
      @f_ret.add_edge(genv, self)
    end

### Public Instance Methods

ret(= @a_ret) click to toggle source

    # File typeprof-0.30.1/lib/typeprof/core/graph/box.rb, line 264
      def ret = @a_ret

      def run0(genv, changes)
        unless @a_ret.check_match(genv, changes, @f_ret)
          msg = "expected: #{ @f_ret.show }; actual: #{ @a_ret.show }"
          case @node
          when AST::ReturnNode
            changes.add_diagnostic(:code_range, msg)
          when AST::DefNode
            changes.add_diagnostic(:last_stmt_code_range, msg)
          when AST::NextNode
            changes.add_diagnostic(:code_range, msg)
          when AST::CallNode
            changes.add_diagnostic(:block_last_stmt_code_range, msg)
          when AST::AttrReaderMetaNode, AST::AttrAccessorMetaNode
            changes.add_diagnostic(:code_range, msg)
          else
            pp @node.class
          end
        end
      end
    end

run0(genv, changes) click to toggle source

    # File typeprof-0.30.1/lib/typeprof/core/graph/box.rb, line 266
    def run0(genv, changes)
      unless @a_ret.check_match(genv, changes, @f_ret)
        msg = "expected: #{ @f_ret.show }; actual: #{ @a_ret.show }"
        case @node
        when AST::ReturnNode
          changes.add_diagnostic(:code_range, msg)
        when AST::DefNode
          changes.add_diagnostic(:last_stmt_code_range, msg)
        when AST::NextNode
          changes.add_diagnostic(:code_range, msg)
        when AST::CallNode
          changes.add_diagnostic(:block_last_stmt_code_range, msg)
        when AST::AttrReaderMetaNode, AST::AttrAccessorMetaNode
          changes.add_diagnostic(:code_range, msg)
        else
          pp @node.class
        end
      end
    end