Class: Mutineer::Mutators::ReturnNil
- Defined in:
- lib/mutineer/mutators/return_nil.rb
Overview
Return-nil mutator.
Replaces explicit return values and final expressions with nil.
Instance Method Summary collapse
-
#mutations_for(subject, source) ⇒ Array<Mutineer::Mutation>
Collects return-nil mutations for a subject.
-
#visit_def_node(node) ⇒ void
Nested method definitions are discovered as their own subjects; do not recurse into them (prevents double-counting their statements).
-
#visit_return_node(node) ⇒ void
Visits return nodes.
Instance Method Details
#mutations_for(subject, source) ⇒ Array<Mutineer::Mutation>
Collects return-nil mutations for a subject.
16 17 18 19 20 21 22 23 24 25 |
# File 'lib/mutineer/mutators/return_nil.rb', line 16 def mutations_for(subject, source) @source = source @mutations = [] body = subject.def_node.body if body body.accept(self) # rule 1 (explicit return nodes in this body) final_expression_nil(body) # rule 2 (method's final expression) end @mutations end |
#visit_def_node(node) ⇒ void
This method returns an undefined value.
Nested method definitions are discovered as their own subjects; do not recurse into them (prevents double-counting their statements).
47 |
# File 'lib/mutineer/mutators/return_nil.rb', line 47 def visit_def_node(node); end |
#visit_return_node(node) ⇒ void
This method returns an undefined value.
Visits return nodes.
31 32 33 34 35 36 37 38 39 40 |
# File 'lib/mutineer/mutators/return_nil.rb', line 31 def visit_return_node(node) args = node.arguments if args values = args.arguments unless values.size == 1 && values.first.is_a?(Prism::NilNode) emit(args.location) end end super end |