lib/rubocop/cop/lint/useless_assignment.rb in rubocop-0.42.0 vs lib/rubocop/cop/lint/useless_assignment.rb in rubocop-0.43.0
- old
+ new
@@ -46,33 +46,46 @@
end
def message_for_useless_assignment(assignment)
variable = assignment.variable
- message = format(MSG, variable.name)
+ format(MSG, variable.name) +
+ message_specification(assignment, variable).to_s
+ end
+ def message_specification(assignment, variable)
if assignment.multiple_assignment?
- message << " Use `_` or `_#{variable.name}` as a variable name " \
- "to indicate that it won't be used."
+ multiple_assignment_message(variable.name)
elsif assignment.operator_assignment?
- return_value_node = return_value_node_of_scope(variable.scope)
- if assignment.meta_assignment_node.equal?(return_value_node)
- non_assignment_operator = assignment.operator.sub(/=$/, '')
- message << " Use just operator `#{non_assignment_operator}`."
- end
+ operator_assignment_message(variable.scope, assignment)
else
- similar_name = find_similar_name(variable.name, variable.scope)
- message << " Did you mean `#{similar_name}`?" if similar_name
+ similar_name_message(variable)
end
+ end
- message
+ def multiple_assignment_message(variable_name)
+ " Use `_` or `_#{variable_name}` as a variable name to indicate " \
+ "that it won't be used."
end
+ def operator_assignment_message(scope, assignment)
+ return_value_node = return_value_node_of_scope(scope)
+ return unless assignment.meta_assignment_node
+ .equal?(return_value_node)
+
+ " Use just operator `#{assignment.operator.sub(/=$/, '')}`."
+ end
+
+ def similar_name_message(variable)
+ similar_name = find_similar_name(variable.name, variable.scope)
+ " Did you mean `#{similar_name}`?" if similar_name
+ end
+
# TODO: More precise handling (rescue, ensure, nested begin, etc.)
def return_value_node_of_scope(scope)
body_node = scope.body_node
- if body_node.type == :begin
+ if body_node.begin_type?
body_node.children.last
else
body_node
end
end