class Archruby::Ruby::TypeInference::Ruby::ProcessMethodArguments

Public Class Methods

new(ast) click to toggle source
Calls superclass method
# File lib/archruby/ruby/type_inference/ruby/process_method_arguments.rb, line 7
def initialize(ast)
  super()
  @ast = ast
  @params = {}
  @current_dependency_class = []
  @current_dependency_class_name = nil
end

Public Instance Methods

build_full_name(const_name) click to toggle source
# File lib/archruby/ruby/type_inference/ruby/process_method_arguments.rb, line 69
def build_full_name(const_name)
  @current_dependency_class.unshift(const_name)
  full_class_path = @current_dependency_class.join('::')
  @current_dependency_class = []
  full_class_path
end
parse() click to toggle source
# File lib/archruby/ruby/type_inference/ruby/process_method_arguments.rb, line 15
def parse
  process(@ast)
  @params
end
process_args(exp) click to toggle source
# File lib/archruby/ruby/type_inference/ruby/process_method_arguments.rb, line 20
def process_args(exp)
  _, *args = exp
  if !args.empty?
    if args.first.class == Symbol
      @params[args.first] ||= Set.new
    else
      args.map! {|sub_tree| process(sub_tree) if sub_tree.class == Sexp}
    end
  end
end
process_array(exp) click to toggle source
# File lib/archruby/ruby/type_inference/ruby/process_method_arguments.rb, line 92
def process_array(exp)
  _, *args = exp
  args.map! {|sub_tree| process(sub_tree)}
end
process_call(exp) click to toggle source
# File lib/archruby/ruby/type_inference/ruby/process_method_arguments.rb, line 43
def process_call(exp)
  _, receiver, method_name, *args = exp
  process(receiver)
  args.map! { |subtree| process(subtree) }
end
process_colon2(exp) click to toggle source
# File lib/archruby/ruby/type_inference/ruby/process_method_arguments.rb, line 58
def process_colon2(exp)
  _, first_part, last_part = exp
  @current_dependency_class.unshift(last_part)
  process(first_part)
end
process_colon3(exp) click to toggle source
# File lib/archruby/ruby/type_inference/ruby/process_method_arguments.rb, line 64
def process_colon3(exp)
  _, constant_name = exp
  @current_dependency_class_name = build_full_name("::#{constant_name}")
end
process_const(exp) click to toggle source
# File lib/archruby/ruby/type_inference/ruby/process_method_arguments.rb, line 49
def process_const(exp)
  _, const_name = exp
  if !@current_dependency_class.empty?
    @current_dependency_class_name = build_full_name(const_name)
  else
    @current_dependency_class_name = const_name.to_s
  end
end
process_cvar(exp) click to toggle source
# File lib/archruby/ruby/type_inference/ruby/process_method_arguments.rb, line 127
def process_cvar(exp)
  # class variable
end
process_cvasgn(exp) click to toggle source
# File lib/archruby/ruby/type_inference/ruby/process_method_arguments.rb, line 108
def process_cvasgn(exp)
  _, class_var_name, *value = exp
  value.map! {|sub_tree| process(sub_tree)}
end
process_false(exp) click to toggle source
# File lib/archruby/ruby/type_inference/ruby/process_method_arguments.rb, line 140
def process_false(exp)
end
process_gvar(exp) click to toggle source
# File lib/archruby/ruby/type_inference/ruby/process_method_arguments.rb, line 146
def process_gvar(exp)
  #global variables
end
process_hash(exp) click to toggle source
# File lib/archruby/ruby/type_inference/ruby/process_method_arguments.rb, line 76
def process_hash(exp)
  _, key, value = exp
  process(key)
  process(value)
end
process_if(exp) click to toggle source
# File lib/archruby/ruby/type_inference/ruby/process_method_arguments.rb, line 82
def process_if(exp)
  _, *args = exp
  args.map! {|sub_tree| process(sub_tree) if sub_tree.class == Sexp }
end
process_iter(exp) click to toggle source
# File lib/archruby/ruby/type_inference/ruby/process_method_arguments.rb, line 102
def process_iter(exp)
  _, first_part, second_part, *body = exp
  process(first_part)
  body.map! {|sub_tree| process(sub_tree)}
end
process_ivar(exp) click to toggle source
# File lib/archruby/ruby/type_inference/ruby/process_method_arguments.rb, line 97
def process_ivar(exp)
  _, var_name, *args = exp
  args.map! {|sub_tree| process(sub_tree)}
end
process_kwarg(exp) click to toggle source
# File lib/archruby/ruby/type_inference/ruby/process_method_arguments.rb, line 87
def process_kwarg(exp)
  _, *args = exp
  args.map! { |subtree| process(subtree) if subtree.class == Sexp}
end
process_lasgn(exp) click to toggle source
# File lib/archruby/ruby/type_inference/ruby/process_method_arguments.rb, line 31
def process_lasgn(exp)
  _, variable_name, *args = exp
  @params[variable_name] ||= Set.new
  args.map! {|sub_tree| process(sub_tree)}
  @params[variable_name].add(@current_dependency_class_name)
  @current_dependency_class_name = nil
end
process_lit(exp) click to toggle source
# File lib/archruby/ruby/type_inference/ruby/process_method_arguments.rb, line 39
def process_lit(exp)
  _, value = exp
end
process_lvar(exp) click to toggle source
# File lib/archruby/ruby/type_inference/ruby/process_method_arguments.rb, line 124
def process_lvar(exp)
end
process_masgn(exp) click to toggle source
# File lib/archruby/ruby/type_inference/ruby/process_method_arguments.rb, line 113
def process_masgn(exp)
  _, *args = exp
  args.map! {|sub_tree| process(sub_tree) if sub_tree.class == Sexp}
end
process_nil(exp) click to toggle source
# File lib/archruby/ruby/type_inference/ruby/process_method_arguments.rb, line 134
def process_nil(exp)
end
process_or(exp) click to toggle source
# File lib/archruby/ruby/type_inference/ruby/process_method_arguments.rb, line 118
def process_or(exp)
  _, left_side, right_side = exp
  process(left_side)
  process(right_side)
end
process_self(exp) click to toggle source
# File lib/archruby/ruby/type_inference/ruby/process_method_arguments.rb, line 143
def process_self(exp)
end
process_str(exp) click to toggle source
# File lib/archruby/ruby/type_inference/ruby/process_method_arguments.rb, line 137
def process_str(exp)
end
process_true(exp) click to toggle source
# File lib/archruby/ruby/type_inference/ruby/process_method_arguments.rb, line 131
def process_true(exp)
end