class Steep::Typing
def add_context_for_body(node, context:)
def add_context_for_body(node, context:) case node.type when :class name_node, super_node, _ = node.children begin_pos = if super_node super_node.loc.expression.end_pos else name_node.loc.expression.end_pos end end_pos = node.loc.end.begin_pos add_context(begin_pos..end_pos, context: context) when :module name_node = node.children[0] begin_pos = name_node.loc.expression.end_pos end_pos = node.loc.end.begin_pos add_context(begin_pos..end_pos, context: context) when :def, :defs args_node = case node.type when :def node.children[1] when :defs node.children[2] end body_begin_pos = if args_node.loc.expression args_node.loc.expression.end_pos else node.loc.name.end_pos end body_end_pos = node.loc.end.begin_pos add_context(body_begin_pos..body_end_pos, context: context) when :block send_node, args_node, _ = node.children begin_pos = if send_node.type != :lambda && args_node.loc.expression args_node.loc.expression.end_pos else node.loc.begin.end_pos end end_pos = node.loc.end.begin_pos add_context(begin_pos..end_pos, context: context) else raise "Unexpected node for insert_context: #{node.type}" end end