Sha256: 7555720348cfb398ffcc3ff531ac747353876216ec481dbaacc1ea48b7a91752
Contents?: true
Size: 1.73 KB
Versions: 29
Compression:
Stored size: 1.73 KB
Contents
# frozen_string_literal: true module Mutant module AST # Node meta information mixin module Meta # Metadata for send nodes class Send include NamedChildren, Concord.new(:node), NodePredicates children :receiver, :selector public :receiver, :selector ATTRIBUTE_ASSIGNMENT_SELECTOR_SUFFIX = '=' # Arguments of mutated node # # @return [Enumerable<Parser::AST::Node>] alias_method :arguments, :remaining_children public :arguments # Test if node is defining a proc # # @return [Boolean] def proc? naked_proc? || proc_new? end # Test if AST node is a valid attribute assignment # # @return [Boolean] def attribute_assignment? !Types::METHOD_OPERATORS.include?(selector) && selector.to_s.end_with?(ATTRIBUTE_ASSIGNMENT_SELECTOR_SUFFIX) end # Test for binary operator implemented as method # # @return [Boolean] def binary_method_operator? Types::BINARY_METHOD_OPERATORS.include?(selector) end # Test if receiver is possibly a top level constant # # @return [Boolean] def receiver_possible_top_level_const? return false unless receiver && n_const?(receiver) Const.new(receiver).possible_top_level? end private def naked_proc? !receiver && selector.equal?(:proc) end def proc_new? receiver && selector.equal?(:new) && n_const?(receiver) && Const.new(receiver).name.equal?(:Proc) end end # Send end # Meta end # AST end # Mutant
Version data entries
29 entries across 29 versions & 1 rubygems