Class: Archruby::Ruby::TypeInference::Ruby::ProcessMethodParams
- Inherits:
-
SexpInterpreter
- Object
- SexpInterpreter
- Archruby::Ruby::TypeInference::Ruby::ProcessMethodParams
- Defined in:
- lib/archruby/ruby/type_inference/ruby/process_method_params.rb
Instance Method Summary collapse
- #add_to_params(name) ⇒ Object
- #build_full_name(const_name) ⇒ Object
-
#initialize(ast, local_scope) ⇒ ProcessMethodParams
constructor
A new instance of ProcessMethodParams.
- #parse ⇒ Object
- #process_and(exp) ⇒ Object
- #process_array(exp) ⇒ Object
- #process_attrasgn(exp) ⇒ Object
- #process_back_ref(exp) ⇒ Object
- #process_block(exp) ⇒ Object
- #process_block_pass(exp) ⇒ Object
- #process_call(exp) ⇒ Object
- #process_case(exp) ⇒ Object
- #process_colon2(exp) ⇒ Object
- #process_colon3(exp) ⇒ Object
- #process_const(exp) ⇒ Object
- #process_cvar(exp) ⇒ Object
- #process_defined(exp) ⇒ Object
- #process_defn(exp) ⇒ Object
- #process_dot2(exp) ⇒ Object
- #process_dot3(exp) ⇒ Object
- #process_dregx(exp) ⇒ Object
- #process_dregx_once(exp) ⇒ Object
- #process_dstr(exp) ⇒ Object
- #process_dsym(exp) ⇒ Object
- #process_dxstr(exp) ⇒ Object
- #process_evstr(exp) ⇒ Object
- #process_false(exp) ⇒ Object
- #process_gvar(exp) ⇒ Object
- #process_hash(exp) ⇒ Object
- #process_iasgn(exp) ⇒ Object
- #process_if(exp) ⇒ Object
- #process_iter(exp) ⇒ Object
- #process_ivar(exp) ⇒ Object
- #process_kwsplat(exp) ⇒ Object
- #process_lasgn(exp) ⇒ Object
- #process_lit(exp) ⇒ Object
- #process_lvar(exp) ⇒ Object
- #process_match2(exp) ⇒ Object
- #process_match3(exp) ⇒ Object
- #process_nil(exp) ⇒ Object
- #process_nth_ref(exp) ⇒ Object
- #process_or(exp) ⇒ Object
- #process_rescue(exp) ⇒ Object
- #process_self(exp) ⇒ Object
- #process_splat(exp) ⇒ Object
- #process_str(exp) ⇒ Object
- #process_super(exp) ⇒ Object
- #process_true(exp) ⇒ Object
- #process_when(exp) ⇒ Object
- #process_xstr(exp) ⇒ Object
- #process_yield(exp) ⇒ Object
- #process_zsuper(exp) ⇒ Object
Constructor Details
#initialize(ast, local_scope) ⇒ ProcessMethodParams
Returns a new instance of ProcessMethodParams.
7 8 9 10 11 12 13 14 |
# File 'lib/archruby/ruby/type_inference/ruby/process_method_params.rb', line 7 def initialize(ast, local_scope) super() @ast = ast @current_dependency_class = [] @current_dependency_class_name = nil @local_scope = local_scope @params = [] end |
Instance Method Details
#add_to_params(name) ⇒ Object
81 82 83 |
# File 'lib/archruby/ruby/type_inference/ruby/process_method_params.rb', line 81 def add_to_params(name) @params << name end |
#build_full_name(const_name) ⇒ Object
96 97 98 99 100 101 |
# File 'lib/archruby/ruby/type_inference/ruby/process_method_params.rb', line 96 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 ⇒ Object
16 17 18 19 |
# File 'lib/archruby/ruby/type_inference/ruby/process_method_params.rb', line 16 def parse @ast.map! {|sub_tree| process(sub_tree)} @params end |
#process_and(exp) ⇒ Object
187 188 189 190 191 |
# File 'lib/archruby/ruby/type_inference/ruby/process_method_params.rb', line 187 def process_and(exp) _, left_side, right_side = exp process(left_side) process(right_side) end |
#process_array(exp) ⇒ Object
145 146 147 148 |
# File 'lib/archruby/ruby/type_inference/ruby/process_method_params.rb', line 145 def process_array(exp) _, *elements = exp elements.map! {|sub_tree| process(sub_tree)} end |
#process_attrasgn(exp) ⇒ Object
212 213 214 215 216 |
# File 'lib/archruby/ruby/type_inference/ruby/process_method_params.rb', line 212 def process_attrasgn(exp) _, receiver, method, arg, value = exp process(receiver) process(value) end |
#process_back_ref(exp) ⇒ Object
235 236 |
# File 'lib/archruby/ruby/type_inference/ruby/process_method_params.rb', line 235 def process_back_ref(exp) end |
#process_block(exp) ⇒ Object
30 31 32 33 |
# File 'lib/archruby/ruby/type_inference/ruby/process_method_params.rb', line 30 def process_block(exp) _, *args = exp args.map! { |subtree| process(subtree) } end |
#process_block_pass(exp) ⇒ Object
76 77 78 79 |
# File 'lib/archruby/ruby/type_inference/ruby/process_method_params.rb', line 76 def process_block_pass(exp) _, *args = exp args.map! { |subtree| process(subtree) } end |
#process_call(exp) ⇒ Object
71 72 73 74 |
# File 'lib/archruby/ruby/type_inference/ruby/process_method_params.rb', line 71 def process_call(exp) _, receiver, method_name, *params = exp process(receiver) end |
#process_case(exp) ⇒ Object
193 194 195 196 197 198 |
# File 'lib/archruby/ruby/type_inference/ruby/process_method_params.rb', line 193 def process_case(exp) _, condition, when_part, ensure_part = exp process(condition) process(when_part) process(ensure_part) end |
#process_colon2(exp) ⇒ Object
85 86 87 88 89 |
# File 'lib/archruby/ruby/type_inference/ruby/process_method_params.rb', line 85 def process_colon2(exp) _, first_part, last_part = exp @current_dependency_class.unshift(last_part) process(first_part) end |
#process_colon3(exp) ⇒ Object
91 92 93 94 |
# File 'lib/archruby/ruby/type_inference/ruby/process_method_params.rb', line 91 def process_colon3(exp) _, constant_name = exp @current_dependency_class_name = build_full_name("::#{constant_name}") end |
#process_const(exp) ⇒ Object
60 61 62 63 64 65 66 67 68 69 |
# File 'lib/archruby/ruby/type_inference/ruby/process_method_params.rb', line 60 def process_const(exp) _, const_name = exp if !@current_dependency_class.empty? @current_dependency_class_name = build_full_name(const_name) add_to_params(@current_dependency_class_name) @current_dependency_class_name = nil else add_to_params(const_name) end end |
#process_cvar(exp) ⇒ Object
242 243 244 |
# File 'lib/archruby/ruby/type_inference/ruby/process_method_params.rb', line 242 def process_cvar(exp) # class variable end |
#process_defined(exp) ⇒ Object
155 156 157 158 |
# File 'lib/archruby/ruby/type_inference/ruby/process_method_params.rb', line 155 def process_defined(exp) _, *args = exp args.map! {|sub_tree| process(sub_tree)} end |
#process_defn(exp) ⇒ Object
21 22 23 |
# File 'lib/archruby/ruby/type_inference/ruby/process_method_params.rb', line 21 def process_defn(exp) #estudar esse caso end |
#process_dot2(exp) ⇒ Object
170 171 172 173 174 |
# File 'lib/archruby/ruby/type_inference/ruby/process_method_params.rb', line 170 def process_dot2(exp) _, left, right = exp process(left) process(right) end |
#process_dot3(exp) ⇒ Object
40 41 42 43 44 |
# File 'lib/archruby/ruby/type_inference/ruby/process_method_params.rb', line 40 def process_dot3(exp) _, left, right = exp process(left) process(right) end |
#process_dregx(exp) ⇒ Object
165 166 167 168 |
# File 'lib/archruby/ruby/type_inference/ruby/process_method_params.rb', line 165 def process_dregx(exp) _, str, *args = exp args.map! {|sub_tree| process(sub_tree) if sub_tree.class == Sexp } end |
#process_dregx_once(exp) ⇒ Object
25 26 27 28 |
# File 'lib/archruby/ruby/type_inference/ruby/process_method_params.rb', line 25 def process_dregx_once(exp) _, start, *args = exp args.map! {|sub_tree| process(sub_tree) if sub_tree.class == Sexp} end |
#process_dstr(exp) ⇒ Object
132 133 134 135 |
# File 'lib/archruby/ruby/type_inference/ruby/process_method_params.rb', line 132 def process_dstr(exp) _, init, *args = exp args.map! {|sub_tree| process(sub_tree)} end |
#process_dsym(exp) ⇒ Object
176 177 178 179 |
# File 'lib/archruby/ruby/type_inference/ruby/process_method_params.rb', line 176 def process_dsym(exp) _, str, *args = exp args.map! {|sub_tree| process(sub_tree)} end |
#process_dxstr(exp) ⇒ Object
160 161 162 163 |
# File 'lib/archruby/ruby/type_inference/ruby/process_method_params.rb', line 160 def process_dxstr(exp) _, str, *args = exp args.map! {|sub_tree| process(sub_tree)} end |
#process_evstr(exp) ⇒ Object
137 138 139 140 |
# File 'lib/archruby/ruby/type_inference/ruby/process_method_params.rb', line 137 def process_evstr(exp) _, *args = exp args.map! {|sub_tree| process(sub_tree)} end |
#process_false(exp) ⇒ Object
258 259 |
# File 'lib/archruby/ruby/type_inference/ruby/process_method_params.rb', line 258 def process_false(exp) end |
#process_gvar(exp) ⇒ Object
232 233 |
# File 'lib/archruby/ruby/type_inference/ruby/process_method_params.rb', line 232 def process_gvar(exp) end |
#process_hash(exp) ⇒ Object
103 104 105 106 107 |
# File 'lib/archruby/ruby/type_inference/ruby/process_method_params.rb', line 103 def process_hash(exp) _, key, value = exp process(key) process(value) end |
#process_iasgn(exp) ⇒ Object
114 115 116 117 |
# File 'lib/archruby/ruby/type_inference/ruby/process_method_params.rb', line 114 def process_iasgn(exp) _, instance_varialbe_name, *value = exp value.map! { |subtree| process(subtree) } end |
#process_if(exp) ⇒ Object
119 120 121 122 123 124 |
# File 'lib/archruby/ruby/type_inference/ruby/process_method_params.rb', line 119 def process_if(exp) _, condition, true_body, else_body = exp process(condition) process(true_body) process(else_body) end |
#process_iter(exp) ⇒ Object
126 127 128 129 130 |
# File 'lib/archruby/ruby/type_inference/ruby/process_method_params.rb', line 126 def process_iter(exp) _, first_part, second_part, *body = exp process(first_part) body.map! {|sub_tree| process(sub_tree)} end |
#process_ivar(exp) ⇒ Object
264 265 |
# File 'lib/archruby/ruby/type_inference/ruby/process_method_params.rb', line 264 def process_ivar(exp) end |
#process_kwsplat(exp) ⇒ Object
35 36 37 38 |
# File 'lib/archruby/ruby/type_inference/ruby/process_method_params.rb', line 35 def process_kwsplat(exp) _, *args = exp args.map! { |subtree| process(subtree) } end |
#process_lasgn(exp) ⇒ Object
46 47 |
# File 'lib/archruby/ruby/type_inference/ruby/process_method_params.rb', line 46 def process_lasgn(exp) end |
#process_lit(exp) ⇒ Object
238 239 240 |
# File 'lib/archruby/ruby/type_inference/ruby/process_method_params.rb', line 238 def process_lit(exp) _, value = exp end |
#process_lvar(exp) ⇒ Object
49 50 51 52 53 54 55 56 57 58 |
# File 'lib/archruby/ruby/type_inference/ruby/process_method_params.rb', line 49 def process_lvar(exp) _, lvar_name = exp type = @local_scope.var_type(lvar_name) if type add_to_params(type) else add_to_params(lvar_name) end #chamado para pegar o valor end |
#process_match2(exp) ⇒ Object
150 151 152 153 |
# File 'lib/archruby/ruby/type_inference/ruby/process_method_params.rb', line 150 def process_match2(exp) _, rec, *args = exp args.map! {|sub_tree| process(sub_tree)} end |
#process_match3(exp) ⇒ Object
223 224 225 226 227 |
# File 'lib/archruby/ruby/type_inference/ruby/process_method_params.rb', line 223 def process_match3(exp) _, first, second = exp process(first) process(second) end |
#process_nil(exp) ⇒ Object
249 250 |
# File 'lib/archruby/ruby/type_inference/ruby/process_method_params.rb', line 249 def process_nil(exp) end |
#process_nth_ref(exp) ⇒ Object
229 230 |
# File 'lib/archruby/ruby/type_inference/ruby/process_method_params.rb', line 229 def process_nth_ref(exp) end |
#process_or(exp) ⇒ Object
181 182 183 184 185 |
# File 'lib/archruby/ruby/type_inference/ruby/process_method_params.rb', line 181 def process_or(exp) _, left_side, right_side = exp process(left_side) process(right_side) end |
#process_rescue(exp) ⇒ Object
206 207 208 209 210 |
# File 'lib/archruby/ruby/type_inference/ruby/process_method_params.rb', line 206 def process_rescue(exp) _, body, rescbody = exp process(body) process(rescbody) end |
#process_self(exp) ⇒ Object
252 253 |
# File 'lib/archruby/ruby/type_inference/ruby/process_method_params.rb', line 252 def process_self(exp) end |
#process_splat(exp) ⇒ Object
109 110 111 112 |
# File 'lib/archruby/ruby/type_inference/ruby/process_method_params.rb', line 109 def process_splat(exp) _, *args = exp args.map! {|sub_tree| process(sub_tree)} end |
#process_str(exp) ⇒ Object
255 256 |
# File 'lib/archruby/ruby/type_inference/ruby/process_method_params.rb', line 255 def process_str(exp) end |
#process_super(exp) ⇒ Object
246 247 |
# File 'lib/archruby/ruby/type_inference/ruby/process_method_params.rb', line 246 def process_super(exp) end |
#process_true(exp) ⇒ Object
261 262 |
# File 'lib/archruby/ruby/type_inference/ruby/process_method_params.rb', line 261 def process_true(exp) end |
#process_when(exp) ⇒ Object
200 201 202 203 204 |
# File 'lib/archruby/ruby/type_inference/ruby/process_method_params.rb', line 200 def process_when(exp) _, condition, body = exp process(condition) process(body) end |
#process_xstr(exp) ⇒ Object
142 143 |
# File 'lib/archruby/ruby/type_inference/ruby/process_method_params.rb', line 142 def process_xstr(exp) end |
#process_yield(exp) ⇒ Object
218 219 220 221 |
# File 'lib/archruby/ruby/type_inference/ruby/process_method_params.rb', line 218 def process_yield(exp) _, *args = exp args.map! {|sub_tree| process(sub_tree)} end |
#process_zsuper(exp) ⇒ Object
267 268 |
# File 'lib/archruby/ruby/type_inference/ruby/process_method_params.rb', line 267 def process_zsuper(exp) end |