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