lib/reek/method_context.rb in reek-1.0.0 vs lib/reek/method_context.rb in reek-1.1.3

- old
+ new

@@ -30,36 +30,42 @@ end def has_parameter(sym) @parameters.include?(sym.to_s) end - + def record_call_to(exp) @calls[exp] += 1 receiver, meth = exp[1..2] - if receiver.nil? - record_depends_on_self - else - case receiver[0] - when :lvar - @refs.record_ref(receiver) unless meth == :new - when :ivar - record_depends_on_self - @refs.record_reference_to_self - end + receiver ||= [:self] + case receiver[0] + when :lvar + @refs.record_ref(receiver) unless meth == :new + when :self + record_use_of_self end end + + def record_use_of_self + record_depends_on_self + @refs.record_reference_to_self + end + + def record_instance_variable(sym) + record_use_of_self + @outer.record_instance_variable(sym) + end def record_depends_on_self @depends_on_self = true end def record_local_variable(sym) @local_variables << Name.new(sym) end def self.is_block_arg?(param) - Array === param and param[0] == :block + (Array === param and param[0] == :block) or (param.to_s =~ /^\&/) end def record_parameter(param) @parameters << Name.new(param) unless MethodContext.is_block_arg?(param) end