Class: Mutant::Subject

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

Overview

Subject of a mutation

Direct Known Subclasses

Method

Defined Under Namespace

Classes: 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.

Return 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.

Return subject identification

Returns:

  • (String)

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

def identification
  "#{expression.syntax}:#{source_path}:#{source_line}"
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.

Return match expressions

Returns:


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

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.

Return mutations

Returns:


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

def mutations
  mutations = [neutral_mutation]
  Mutator.each(node) do |mutant|
    mutations << Mutation::Evil.new(self, wrap_node(mutant))
  end
  mutations
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 the subject for the insertion of mutation

Returns:

  • (self)

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.

Return source representation of ast

Returns:

  • (String)

82
83
84
# File 'lib/mutant/subject.rb', line 82

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

#source_lineFixnum

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.

Return source line

Returns:

  • (Fixnum)

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

def source_line
  source_lines.begin
end

#source_linesRange<Fixnum>

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.

Return source lines

Returns:

  • (Range<Fixnum>)

49
50
51
52
# File 'lib/mutant/subject.rb', line 49

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

#source_pathString

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.

Return source path

Returns:

  • (String)

29
30
31
# File 'lib/mutant/subject.rb', line 29

def source_path
  context.source_path
end