Class: Mutant::Subject Private

Inherits:
Object
  • Object
show all
Includes:
Enumerable, Unparser::AbstractType, Unparser::Adamantium
Defined in:
lib/mutant/subject.rb,
lib/mutant/subject/config.rb,
lib/mutant/subject/method.rb,
lib/mutant/subject/method/instance.rb,
lib/mutant/subject/method/metaclass.rb,
lib/mutant/subject/method/singleton.rb

Overview

This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.

Subject of a mutation

Direct Known Subclasses

Method

Defined Under Namespace

Classes: Config, Method

Instance Method Summary collapse

Instance Method Details

#expressionExpression

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Match expression

Returns:



93
# File 'lib/mutant/subject.rb', line 93

abstract_method :expression

#identificationString

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Identification string

Returns:

  • (String)


77
78
79
# File 'lib/mutant/subject.rb', line 77

def identification
  "#{expression.syntax}:#{source_path}:#{source_line}"
end

#inline_disabled?Boolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns:

  • (Boolean)


33
34
35
# File 'lib/mutant/subject.rb', line 33

def inline_disabled?
  config.inline_disable
end

#match_expressionsEnumerable<Expression>

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Match expressions

Returns:



98
# File 'lib/mutant/subject.rb', line 98

abstract_method :match_expressions

#mutationsEnumerable<Mutation>, undefined

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Mutations for this subject

mutant:disable rubocop:disable Metrics/MethodLength

Returns:



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/mutant/subject.rb', line 16

def mutations
  [neutral_mutation].concat(
    Mutator::Node.mutate(
      config: config.mutation,
      node:
    ).each_with_object([]) do |mutant, aggregate|
      Mutation::Evil
        .from_node(subject: self, node: wrap_node(mutant))
        .either(
          ->(validation) {},
          aggregate.public_method(:<<)
        )
    end
  )
end

#post_insertself

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Perform post insert cleanup

Returns:

  • (self)


54
55
56
# File 'lib/mutant/subject.rb', line 54

def post_insert
  self
end

#prepareself

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Prepare subject for insertion of mutation

Returns:

  • (self)


47
48
49
# File 'lib/mutant/subject.rb', line 47

def prepare
  self
end

#sourceString

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Source representation of AST

Returns:

  • (String)


85
86
87
# File 'lib/mutant/subject.rb', line 85

def source
  Unparser.unparse(wrap_node(node))
end

#source_lineInteger

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

First source line

Returns:

  • (Integer)


70
71
72
# File 'lib/mutant/subject.rb', line 70

def source_line
  source_lines.begin
end

#source_linesRange<Integer>

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Source line range

Returns:



61
62
63
64
# File 'lib/mutant/subject.rb', line 61

def source_lines
  expression = node.location.expression
  expression.line..expression.source_buffer.decompose_position(expression.end_pos).first
end

#source_pathPathname

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Source path

Returns:

  • (Pathname)


40
41
42
# File 'lib/mutant/subject.rb', line 40

def source_path
  context.source_path
end