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



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

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



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

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.



25
26
27
# File 'lib/mutant/subject.rb', line 25

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



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

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



13
14
15
16
17
18
19
20
21
22
# File 'lib/mutant/subject.rb', line 13

def mutations
  [neutral_mutation].concat(
    Mutator::Node.mutate(
      config: config.mutation,
      node:   node
    ).map do |mutant|
      Mutation::Evil.new(subject: self, node: wrap_node(mutant))
    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



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

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



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

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



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

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



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

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



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

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



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

def source_path
  context.source_path
end