class Rubocop::Cop::VariableInspector::Assignment
This class represents each assignment of a variable.
def grantparent_node
def grantparent_node ancestor_nodes_in_scope[-2] end
def initialize(node, variable)
def initialize(node, variable) unless VARIABLE_ASSIGNMENT_TYPES.include?(node.type) fail ArgumentError, "Node type must be any of #{VARIABLE_ASSIGNMENT_TYPES}, " + "passed #{node.type}" end @node = node @variable = variable @referenced = false end
def meta_assignment_node
def meta_assignment_node if instance_variable_defined?(:@meta_assignment_node) return @meta_assignment_node end @meta_assignment_node = nil return unless parent_node if OPERATOR_ASSIGNMENT_TYPES.include?(parent_node.type) && parent_node.children.index(@node) == 0 return @meta_assignment_node = parent_node end return unless grantparent_node if parent_node.type == MULTIPLE_LEFT_HAND_SIDE_TYPE && grantparent_node.type == MULTIPLE_ASSIGNMENT_TYPE return @meta_assignment_node = grantparent_node end nil end
def multiple_assignment?
def multiple_assignment? return false unless meta_assignment_node meta_assignment_node.type == MULTIPLE_ASSIGNMENT_TYPE end
def name
def name @node.children.first end
def operator
def operator assignment_node = meta_assignment_node || @node assignment_node.loc.operator.source end
def operator_assignment?
def operator_assignment? return false unless meta_assignment_node OPERATOR_ASSIGNMENT_TYPES.include?(meta_assignment_node.type) end
def parent_node
def parent_node ancestor_nodes_in_scope.last end
def reference!
def reference! @referenced = true end
def reference_penetrable?
def reference_penetrable? REFERENCE_PENETRABLE_BRANCH_TYPES.include?(branch_type) end
def regexp_named_capture?
def regexp_named_capture? @node.type == REGEXP_NAMED_CAPTURE_TYPE end
def scope
def scope @variable.scope end
def used?
def used? @variable.captured_by_block? || @referenced end