Class: Henitai::Operators::ReturnValue

Inherits:
Henitai::Operator show all
Defined in:
lib/henitai/operators/return_value.rb

Overview

Replaces return values and implicit final expressions with neutral values.

Constant Summary collapse

NODE_TYPES =

Parser uses :true / :false node types, so the AST symbols are intentional. rubocop:disable Lint/BooleanSymbol

%i[return send int float str dstr true false if case while until array hash].freeze
REPLACEMENT_FACTORIES =
[
  -> { Parser::AST::Node.new(:nil, []) },
  -> { Parser::AST::Node.new(:int, [0]) },
  -> { Parser::AST::Node.new(:false, []) }
].freeze

Constants inherited from Henitai::Operator

Henitai::Operator::FULL_SET, Henitai::Operator::LIGHT_SET

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Henitai::Operator

for_set, #name

Class Method Details

.node_typesObject

rubocop:enable Lint/BooleanSymbol



19
20
21
# File 'lib/henitai/operators/return_value.rb', line 19

def self.node_types
  NODE_TYPES
end

Instance Method Details

#mutate(node, subject:) ⇒ Object



23
24
25
26
27
28
29
30
# File 'lib/henitai/operators/return_value.rb', line 23

def mutate(node, subject:)
  case node.type
  when :return
    mutate_explicit_return(node, subject:)
  else
    mutate_implicit_return(node, subject:)
  end
end