Sha256: cc30102316837ee07ecd42917cb8f7988f683800820a09e7d73783a415d324c5

Contents?: true

Size: 1.41 KB

Versions: 4

Compression:

Stored size: 1.41 KB

Contents

module Mutant
  class Mutator
    class Node
      # Abstract mutator for literal AST nodes
      class Literal < self
        include AbstractType

      private

        # Return new float literal
        #
        # @param [#to_f] value
        #
        # @return [Rubinius::Node::FloatLiteral]
        #
        # @api private
        #
        def new_float(value)
          new(Rubinius::AST::FloatLiteral, value)
        end

        # Emit a new node with wrapping class for each entry in values
        #
        # @param [Array] values
        #
        # @return [undefined]
        #
        # @api private
        #
        def emit_values(values)
          values.each do |value|
            emit_self(value)
          end
        end

        # Return AST representing NaN
        #
        # @return [Rubinius::Node::AST]
        #
        # @api private
        #
        def nan
          new_send(new_float(0), :/, new_float(0))
        end

        # Return AST representing negative infinity
        #
        # @return [Rubinius::Node::AST]
        #
        # @api private
        #
        def negative_infinity
          new(Rubinius::AST::Negate, infinity)
        end

        # Return AST representing infinity
        #
        # @return [Rubinius::Node::AST]
        #
        # @api private
        #
        def infinity
          new_send(new_float(1), :/, new_float(0))
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
mutant-0.2.12 lib/mutant/mutator/node/literal.rb
mutant-0.2.11 lib/mutant/mutator/node/literal.rb
mutant-0.2.9 lib/mutant/mutator/node/literal.rb
mutant-0.2.8 lib/mutant/mutator/node/literal.rb