mutest 0.0.9 → 0.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (236) hide show
  1. checksums.yaml +5 -5
  2. data/.circleci/config.yml +38 -0
  3. data/{config/rubocop.yml → .rubocop.yml} +80 -183
  4. data/CHANGELOG.md +8 -0
  5. data/Gemfile +2 -3
  6. data/Gemfile.lock +41 -52
  7. data/README.md +16 -0
  8. data/Rakefile +1 -1
  9. data/lib/mutest.rb +5 -4
  10. data/lib/mutest/actor.rb +7 -6
  11. data/lib/mutest/actor/env.rb +3 -3
  12. data/lib/mutest/actor/mailbox.rb +5 -4
  13. data/lib/mutest/actor/receiver.rb +6 -5
  14. data/lib/mutest/actor/sender.rb +5 -4
  15. data/lib/mutest/ast.rb +4 -3
  16. data/lib/mutest/ast/meta.rb +3 -3
  17. data/lib/mutest/ast/meta/const.rb +7 -5
  18. data/lib/mutest/ast/meta/optarg.rb +6 -5
  19. data/lib/mutest/ast/meta/resbody.rb +6 -5
  20. data/lib/mutest/ast/meta/restarg.rb +6 -5
  21. data/lib/mutest/ast/meta/send.rb +8 -20
  22. data/lib/mutest/ast/meta/symbol.rb +6 -5
  23. data/lib/mutest/ast/named_children.rb +5 -5
  24. data/lib/mutest/ast/node_predicates.rb +4 -4
  25. data/lib/mutest/ast/nodes.rb +3 -3
  26. data/lib/mutest/ast/regexp.rb +3 -3
  27. data/lib/mutest/ast/regexp/transformer.rb +19 -11
  28. data/lib/mutest/ast/regexp/transformer/alternative.rb +6 -6
  29. data/lib/mutest/ast/regexp/transformer/character_set.rb +7 -7
  30. data/lib/mutest/ast/regexp/transformer/direct.rb +7 -7
  31. data/lib/mutest/ast/regexp/transformer/options_group.rb +7 -7
  32. data/lib/mutest/ast/regexp/transformer/quantifier.rb +11 -13
  33. data/lib/mutest/ast/regexp/transformer/recursive.rb +7 -7
  34. data/lib/mutest/ast/regexp/transformer/root.rb +6 -6
  35. data/lib/mutest/ast/regexp/transformer/text.rb +7 -7
  36. data/lib/mutest/ast/sexp.rb +3 -3
  37. data/lib/mutest/ast/types.rb +8 -6
  38. data/lib/mutest/cli.rb +5 -3
  39. data/lib/mutest/color.rb +4 -3
  40. data/lib/mutest/config.rb +4 -3
  41. data/lib/mutest/context.rb +4 -3
  42. data/lib/mutest/diff.rb +5 -3
  43. data/lib/mutest/env.rb +5 -5
  44. data/lib/mutest/env/bootstrap.rb +7 -5
  45. data/lib/mutest/expression.rb +7 -5
  46. data/lib/mutest/expression/method.rb +4 -4
  47. data/lib/mutest/expression/methods.rb +4 -4
  48. data/lib/mutest/expression/namespace.rb +9 -8
  49. data/lib/mutest/expression/parser.rb +9 -8
  50. data/lib/mutest/integration.rb +5 -3
  51. data/lib/mutest/integration/null.rb +3 -3
  52. data/lib/mutest/isolation.rb +2 -2
  53. data/lib/mutest/isolation/fork.rb +4 -4
  54. data/lib/mutest/isolation/none.rb +4 -4
  55. data/lib/mutest/loader.rb +2 -2
  56. data/lib/mutest/matcher.rb +4 -3
  57. data/lib/mutest/matcher/chain.rb +3 -3
  58. data/lib/mutest/matcher/compiler.rb +7 -5
  59. data/lib/mutest/matcher/config.rb +5 -4
  60. data/lib/mutest/matcher/filter.rb +3 -3
  61. data/lib/mutest/matcher/method.rb +13 -13
  62. data/lib/mutest/matcher/method/instance.rb +6 -6
  63. data/lib/mutest/matcher/method/singleton.rb +5 -5
  64. data/lib/mutest/matcher/methods.rb +7 -6
  65. data/lib/mutest/matcher/namespace.rb +3 -3
  66. data/lib/mutest/matcher/null.rb +3 -3
  67. data/lib/mutest/matcher/scope.rb +3 -3
  68. data/lib/mutest/matcher/static.rb +3 -3
  69. data/lib/mutest/meta.rb +4 -4
  70. data/lib/mutest/meta/example.rb +5 -4
  71. data/lib/mutest/meta/example/dsl.rb +12 -11
  72. data/lib/mutest/meta/example/verification.rb +7 -6
  73. data/lib/mutest/mutation.rb +7 -6
  74. data/lib/mutest/mutator.rb +6 -6
  75. data/lib/mutest/mutator/node.rb +19 -7
  76. data/lib/mutest/mutator/node/and_asgn.rb +4 -4
  77. data/lib/mutest/mutator/node/argument.rb +6 -5
  78. data/lib/mutest/mutator/node/arguments.rb +18 -5
  79. data/lib/mutest/mutator/node/begin.rb +4 -4
  80. data/lib/mutest/mutator/node/binary.rb +4 -4
  81. data/lib/mutest/mutator/node/block.rb +6 -5
  82. data/lib/mutest/mutator/node/block_pass.rb +4 -4
  83. data/lib/mutest/mutator/node/break.rb +4 -4
  84. data/lib/mutest/mutator/node/case.rb +6 -4
  85. data/lib/mutest/mutator/node/class.rb +4 -4
  86. data/lib/mutest/mutator/node/conditional_loop.rb +4 -4
  87. data/lib/mutest/mutator/node/const.rb +4 -4
  88. data/lib/mutest/mutator/node/define.rb +6 -6
  89. data/lib/mutest/mutator/node/defined.rb +4 -4
  90. data/lib/mutest/mutator/node/dstr.rb +4 -4
  91. data/lib/mutest/mutator/node/dsym.rb +4 -4
  92. data/lib/mutest/mutator/node/generic.rb +5 -4
  93. data/lib/mutest/mutator/node/if.rb +6 -4
  94. data/lib/mutest/mutator/node/index.rb +128 -0
  95. data/lib/mutest/mutator/node/kwbegin.rb +4 -4
  96. data/lib/mutest/mutator/node/literal.rb +4 -4
  97. data/lib/mutest/mutator/node/literal/array.rb +8 -6
  98. data/lib/mutest/mutator/node/literal/boolean.rb +5 -5
  99. data/lib/mutest/mutator/node/literal/fixnum.rb +5 -5
  100. data/lib/mutest/mutator/node/literal/float.rb +5 -5
  101. data/lib/mutest/mutator/node/literal/hash.rb +6 -6
  102. data/lib/mutest/mutator/node/literal/nil.rb +5 -5
  103. data/lib/mutest/mutator/node/literal/range.rb +5 -5
  104. data/lib/mutest/mutator/node/literal/regex.rb +5 -5
  105. data/lib/mutest/mutator/node/literal/string.rb +5 -5
  106. data/lib/mutest/mutator/node/literal/symbol.rb +5 -5
  107. data/lib/mutest/mutator/node/masgn.rb +4 -4
  108. data/lib/mutest/mutator/node/match_current_line.rb +4 -4
  109. data/lib/mutest/mutator/node/mlhs.rb +4 -4
  110. data/lib/mutest/mutator/node/named_value/access.rb +6 -6
  111. data/lib/mutest/mutator/node/named_value/constant_assignment.rb +6 -5
  112. data/lib/mutest/mutator/node/named_value/variable_assignment.rb +5 -5
  113. data/lib/mutest/mutator/node/next.rb +4 -4
  114. data/lib/mutest/mutator/node/nthref.rb +4 -4
  115. data/lib/mutest/mutator/node/op_asgn.rb +4 -4
  116. data/lib/mutest/mutator/node/or_asgn.rb +5 -4
  117. data/lib/mutest/mutator/node/procarg_zero.rb +45 -0
  118. data/lib/mutest/mutator/node/regexp.rb +6 -6
  119. data/lib/mutest/mutator/node/regexp/alternation_meta.rb +5 -5
  120. data/lib/mutest/mutator/node/regexp/capture_group.rb +5 -5
  121. data/lib/mutest/mutator/node/regexp/character_type.rb +5 -5
  122. data/lib/mutest/mutator/node/regexp/end_of_line_anchor.rb +5 -5
  123. data/lib/mutest/mutator/node/regexp/end_of_string_or_before_end_of_line_anchor.rb +5 -5
  124. data/lib/mutest/mutator/node/regexp/one_or_more.rb +5 -5
  125. data/lib/mutest/mutator/node/regexp/zero_or_more.rb +5 -5
  126. data/lib/mutest/mutator/node/regopt.rb +4 -4
  127. data/lib/mutest/mutator/node/resbody.rb +6 -4
  128. data/lib/mutest/mutator/node/rescue.rb +6 -4
  129. data/lib/mutest/mutator/node/return.rb +5 -4
  130. data/lib/mutest/mutator/node/send.rb +6 -34
  131. data/lib/mutest/mutator/node/send/attribute_assignment.rb +5 -5
  132. data/lib/mutest/mutator/node/send/binary.rb +5 -5
  133. data/lib/mutest/mutator/node/send/conditional.rb +5 -5
  134. data/lib/mutest/mutator/node/splat.rb +4 -4
  135. data/lib/mutest/mutator/node/super.rb +4 -4
  136. data/lib/mutest/mutator/node/when.rb +4 -4
  137. data/lib/mutest/mutator/node/yield.rb +4 -4
  138. data/lib/mutest/mutator/node/zsuper.rb +4 -4
  139. data/lib/mutest/mutator/util.rb +3 -3
  140. data/lib/mutest/mutator/util/array.rb +6 -6
  141. data/lib/mutest/mutator/util/symbol.rb +4 -4
  142. data/lib/mutest/parallel.rb +16 -12
  143. data/lib/mutest/parallel/master.rb +4 -4
  144. data/lib/mutest/parallel/source.rb +6 -5
  145. data/lib/mutest/parallel/worker.rb +6 -5
  146. data/lib/mutest/parser.rb +4 -3
  147. data/lib/mutest/registry.rb +6 -5
  148. data/lib/mutest/reporter.rb +2 -2
  149. data/lib/mutest/reporter/cli.rb +3 -3
  150. data/lib/mutest/reporter/cli/format.rb +9 -8
  151. data/lib/mutest/reporter/cli/printer.rb +8 -8
  152. data/lib/mutest/reporter/cli/printer/config.rb +5 -5
  153. data/lib/mutest/reporter/cli/printer/env_progress.rb +16 -16
  154. data/lib/mutest/reporter/cli/printer/env_result.rb +5 -5
  155. data/lib/mutest/reporter/cli/printer/mutation_progress_result.rb +5 -5
  156. data/lib/mutest/reporter/cli/printer/mutation_result.rb +5 -5
  157. data/lib/mutest/reporter/cli/printer/status.rb +6 -5
  158. data/lib/mutest/reporter/cli/printer/status_progressive.rb +5 -5
  159. data/lib/mutest/reporter/cli/printer/subject_progress.rb +5 -5
  160. data/lib/mutest/reporter/cli/printer/subject_result.rb +5 -5
  161. data/lib/mutest/reporter/cli/printer/test_result.rb +5 -5
  162. data/lib/mutest/reporter/cli/tput.rb +6 -5
  163. data/lib/mutest/reporter/null.rb +3 -3
  164. data/lib/mutest/reporter/sequence.rb +3 -3
  165. data/lib/mutest/repository.rb +9 -7
  166. data/lib/mutest/require_highjack.rb +2 -2
  167. data/lib/mutest/requirer.rb +2 -2
  168. data/lib/mutest/result.rb +18 -12
  169. data/lib/mutest/runner.rb +6 -3
  170. data/lib/mutest/runner/sink.rb +3 -3
  171. data/lib/mutest/scope.rb +2 -2
  172. data/lib/mutest/selector.rb +4 -3
  173. data/lib/mutest/selector/expression.rb +3 -3
  174. data/lib/mutest/source_file.rb +6 -5
  175. data/lib/mutest/subject.rb +5 -3
  176. data/lib/mutest/subject/method.rb +3 -3
  177. data/lib/mutest/subject/method/instance.rb +5 -5
  178. data/lib/mutest/subject/method/singleton.rb +4 -4
  179. data/lib/mutest/test.rb +4 -3
  180. data/lib/mutest/util.rb +3 -3
  181. data/lib/mutest/version.rb +2 -2
  182. data/lib/mutest/warning_filter.rb +3 -3
  183. data/lib/mutest/zombifier.rb +5 -4
  184. data/meta/block.rb +22 -3
  185. data/meta/case.rb +29 -1
  186. data/meta/index.rb +132 -0
  187. data/meta/indexasgn.rb +42 -0
  188. data/meta/lambda.rb +17 -0
  189. data/meta/send.rb +5 -139
  190. data/mutest-rspec.gemspec +1 -1
  191. data/mutest.gemspec +11 -12
  192. data/spec/integration/mutest/rspec_spec.rb +1 -1
  193. data/spec/shared/framework_integration_behavior.rb +1 -1
  194. data/spec/shared/idempotent_method_behavior.rb +2 -1
  195. data/spec/spec_helper.rb +5 -5
  196. data/spec/support/compress_helper.rb +2 -1
  197. data/spec/support/corpus.rb +12 -8
  198. data/spec/support/fake_actor.rb +19 -14
  199. data/spec/support/file_system.rb +10 -7
  200. data/spec/support/ice_nine_config.rb +3 -3
  201. data/spec/support/ruby_vm.rb +10 -11
  202. data/spec/support/shared_context.rb +1 -1
  203. data/spec/support/test_app.rb +1 -1
  204. data/spec/support/warning.rb +8 -7
  205. data/spec/support/xspec.rb +18 -17
  206. data/spec/unit/mutest/actor/binding_spec.rb +1 -0
  207. data/spec/unit/mutest/ast/meta/optarg_spec.rb +1 -0
  208. data/spec/unit/mutest/ast/meta/send/proc_predicate_spec.rb +1 -1
  209. data/spec/unit/mutest/ast/meta/send/receiver_possible_top_level_const_predicate_spec.rb +1 -1
  210. data/spec/unit/mutest/ast/meta/send_spec.rb +14 -18
  211. data/spec/unit/mutest/ast/regexp_spec.rb +4 -3
  212. data/spec/unit/mutest/ast_spec.rb +1 -1
  213. data/spec/unit/mutest/cli_spec.rb +15 -15
  214. data/spec/unit/mutest/env/bootstrap_spec.rb +1 -1
  215. data/spec/unit/mutest/integration_spec.rb +1 -0
  216. data/spec/unit/mutest/isolation/none_spec.rb +1 -1
  217. data/spec/unit/mutest/matcher/config_spec.rb +1 -0
  218. data/spec/unit/mutest/mutator/node_spec.rb +1 -1
  219. data/spec/unit/mutest/parallel/master_spec.rb +3 -3
  220. data/spec/unit/mutest/reporter/cli/printer_spec.rb +2 -0
  221. data/spec/unit/mutest/reporter/cli/tput_spec.rb +2 -0
  222. data/spec/unit/mutest/reporter/cli_spec.rb +2 -0
  223. data/spec/unit/mutest/repository/diff_spec.rb +1 -1
  224. data/spec/unit/mutest/runner_spec.rb +1 -1
  225. data/spec/unit/mutest/subject_spec.rb +1 -1
  226. data/spec/unit/mutest/warning_filter_spec.rb +2 -3
  227. data/spec/unit/mutest/zombifier_spec.rb +1 -1
  228. data/test_app/Gemfile.rspec3.8 +7 -0
  229. metadata +67 -68
  230. data/.buildkite/hooks/pre-command +0 -3
  231. data/.buildkite/pipeline.yml +0 -38
  232. data/.gitmodules +0 -3
  233. data/circle.yml +0 -10
  234. data/config/triage.yml +0 -2
  235. data/config/yardstick.yml +0 -2
  236. data/lib/mutest/mutator/node/send/index.rb +0 -47
@@ -16,6 +16,7 @@ module Mutest
16
16
  def dispatch
17
17
  mutate_name
18
18
  return unless value # op asgn
19
+
19
20
  emit_value_mutations
20
21
  emit_remove_const
21
22
  end
@@ -35,8 +36,8 @@ module Mutest
35
36
  emit_name(name.upcase)
36
37
  end
37
38
  end
38
- end # ConstantAssignment
39
- end # NamedValue
40
- end # Node
41
- end # Mutator
42
- end # Mutest
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
@@ -40,8 +40,8 @@ module Mutest
40
40
  emit_name(:"#{prefix}#{name}")
41
41
  end
42
42
  end
43
- end # VariableAssignment
44
- end # NamedValue
45
- end # Node
46
- end # Mutator
47
- end # Mutest
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -16,7 +16,7 @@ module Mutest
16
16
  children.each_index(&method(:delete_child))
17
17
  emit(s(:break, *children))
18
18
  end
19
- end # Next
20
- end # Node
21
- end # Mutator
22
- end # Mutest
19
+ end
20
+ end
21
+ end
22
+ end
@@ -16,7 +16,7 @@ module Mutest
16
16
  emit_number(number - 1) unless number.equal?(1)
17
17
  emit_number(number + 1)
18
18
  end
19
- end # NthRef
20
- end # Node
21
- end # Mutator
22
- end # Mutest
19
+ end
20
+ end
21
+ end
22
+ end
@@ -44,7 +44,7 @@ module Mutest
44
44
  emit(s(:send, left, operation, right))
45
45
  emit(s(:send, left.children.first, :"#{left.children.last}=", right))
46
46
  end
47
- end # OpAsgn
48
- end # Node
49
- end # Mutator
50
- end # Mutest
47
+ end
48
+ end
49
+ end
50
+ end
@@ -16,11 +16,12 @@ module Mutest
16
16
  emit_singletons
17
17
  emit_right_mutations
18
18
  return if n_ivasgn?(left)
19
+
19
20
  emit_left_mutations do |node|
20
21
  AST::Types::ASSIGNABLE_VARIABLES.include?(node.type)
21
22
  end
22
23
  end
23
- end # OrAsgn
24
- end # Node
25
- end # Mutator
26
- end # Mutest
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Mutest
4
+ class Mutator
5
+ class Node
6
+ class ProcargZero < self
7
+ MAP = {
8
+ ::Parser::AST::Node => :emit_argument_node_mutations,
9
+ Symbol => :emit_argument_symbol_mutations
10
+ }.freeze
11
+
12
+ private_constant(*constants(false))
13
+
14
+ handle :procarg0
15
+
16
+ children :argument
17
+
18
+ private
19
+
20
+ # Emit mutations
21
+ #
22
+ # @return [undefined]
23
+ def dispatch
24
+ __send__(MAP.fetch(argument.class))
25
+ end
26
+
27
+ # Emit argument symbol mutations
28
+ #
29
+ # @return [undefined]
30
+ def emit_argument_symbol_mutations
31
+ emit_type(:"_#{argument}") unless argument.to_s.start_with?('_')
32
+ end
33
+
34
+ # Emit argument node mutations
35
+ #
36
+ # @return [undefined]
37
+ def emit_argument_node_mutations
38
+ emit_argument_mutations
39
+ first = Mutest::Util.one(argument.children)
40
+ emit_type(first)
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
@@ -12,7 +12,7 @@ module Mutest
12
12
  def dispatch
13
13
  children.each_index(&method(:mutate_child))
14
14
  end
15
- end # RootExpression
15
+ end
16
16
 
17
17
  # Mutator for beginning of line anchor `^`
18
18
  class BeginningOfLineAnchor < Node
@@ -26,8 +26,8 @@ module Mutest
26
26
  def dispatch
27
27
  emit(s(:regexp_bos_anchor))
28
28
  end
29
- end # BeginningOfLineAnchor
30
- end # Regexp
31
- end # Node
32
- end # Mutator
33
- end # Mutest
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -14,8 +14,8 @@ module Mutest
14
14
  def dispatch
15
15
  children.each_index(&method(:delete_child))
16
16
  end
17
- end # AlternationMeta
18
- end # Regexp
19
- end # Node
20
- end # Mutator
21
- end # Mutest
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -19,8 +19,8 @@ module Mutest
19
19
  emit(s(:regexp_passive_group, group))
20
20
  emit_group_mutations
21
21
  end
22
- end # CaptureGroup
23
- end # Regexp
24
- end # Node
25
- end # Mutator
26
- end # Mutest
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -22,8 +22,8 @@ module Mutest
22
22
  def dispatch
23
23
  emit(s(MAP.fetch(node.type)))
24
24
  end
25
- end # CharacterType
26
- end # Regexp
27
- end # Node
28
- end # Mutator
29
- end # Mutest
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -14,8 +14,8 @@ module Mutest
14
14
  def dispatch
15
15
  emit(s(:regexp_eos_anchor))
16
16
  end
17
- end # EndOfLineAnchor
18
- end # Regexp
19
- end # Node
20
- end # Mutator
21
- end # Mutest
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -14,8 +14,8 @@ module Mutest
14
14
  def dispatch
15
15
  emit(s(:regexp_eos_anchor))
16
16
  end
17
- end # EndOfStringOrBeforeEndOfLineAnchor
18
- end # Regexp
19
- end # Node
20
- end # Mutator
21
- end # Mutest
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -27,8 +27,8 @@ module Mutest
27
27
  end
28
28
 
29
29
  private_constant(*constants(false))
30
- end # OneOrMore
31
- end # Regexp
32
- end # Node
33
- end # Mutator
34
- end # Mutest
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -22,8 +22,8 @@ module Mutest
22
22
  emit_subject_mutations
23
23
  emit(subject)
24
24
  end
25
- end # ZeroOrMore
26
- end # Regexp
27
- end # Node
28
- end # Mutator
29
- end # Mutest
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -22,7 +22,7 @@ module Mutest
22
22
  def mutated_flags
23
23
  (children - MUTATED_FLAGS)
24
24
  end
25
- end # Regopt
26
- end # Node
27
- end # Mutator
28
- end # Mutest
25
+ end
26
+ end
27
+ end
28
+ end
@@ -23,12 +23,14 @@ module Mutest
23
23
  # @return [undefined]
24
24
  def mutate_captures
25
25
  return unless captures
26
+
26
27
  mutate_with(Util::Array::Element, captures.children) do |matchers|
27
28
  next if matchers.any?(&method(:n_nil?))
29
+
28
30
  emit_captures(s(:array, *matchers))
29
31
  end
30
32
  end
31
- end # Resbody
32
- end # Node
33
- end # Mutator
34
- end # Mutest
33
+ end
34
+ end
35
+ end
36
+ end
@@ -51,6 +51,7 @@ module Mutest
51
51
  # @return [undefined]
52
52
  def mutate_body
53
53
  return unless body
54
+
54
55
  emit_body_mutations
55
56
  emit(body)
56
57
  end
@@ -60,10 +61,11 @@ module Mutest
60
61
  # @return [undefined]
61
62
  def mutate_else_body
62
63
  return unless else_body
64
+
63
65
  emit_else_body_mutations
64
66
  emit_concat(else_body)
65
67
  end
66
- end # Rescue
67
- end # Node
68
- end # Mutator
69
- end # Mutest
68
+ end
69
+ end
70
+ end
71
+ end
@@ -15,10 +15,11 @@ module Mutest
15
15
  def dispatch
16
16
  emit_singletons
17
17
  return unless value
18
+
18
19
  emit(value)
19
20
  emit_value_mutations
20
21
  end
21
- end # Return
22
- end # Node
23
- end # Mutator
24
- end # Mutest
22
+ end
23
+ end
24
+ end
25
+ end
@@ -12,7 +12,6 @@ module Mutest
12
12
 
13
13
  SELECTOR_REPLACEMENTS = IceNine.deep_freeze(
14
14
  __send__: %i[public_send],
15
- :[] => %i[at fetch key?],
16
15
  :< => %i[== eql? equal?],
17
16
  :<= => %i[< == eql? equal?],
18
17
  :== => %i[eql? equal?],
@@ -63,17 +62,7 @@ module Mutest
63
62
  # @return [undefined]
64
63
  def dispatch
65
64
  emit_singletons
66
- if meta.index_assignment?
67
- run(Index::Assign)
68
- else
69
- non_index_dispatch
70
- end
71
- end
72
65
 
73
- # Perform non index dispatch
74
- #
75
- # @return [undefined]
76
- def non_index_dispatch
77
66
  if meta.binary_method_operator?
78
67
  run(Binary)
79
68
  elsif meta.attribute_assignment?
@@ -121,7 +110,6 @@ module Mutest
121
110
  emit_dig_mutation
122
111
  emit_double_negation_mutation
123
112
  emit_lambda_mutation
124
- emit_drop_mutation
125
113
  end
126
114
 
127
115
  # Emit selector mutations specific to top level constants
@@ -189,19 +177,6 @@ module Mutest
189
177
  emit_type(fetch_mutation, :dig, *tail)
190
178
  end
191
179
 
192
- # Emit mutation `foo[n..-1]` -> `foo.drop(n)`
193
- #
194
- # @return [undefined]
195
- def emit_drop_mutation
196
- return if !selector.equal?(:[]) || !arguments.one? || !n_irange?(Mutest::Util.one(arguments))
197
-
198
- start, ending = *arguments.first
199
-
200
- return unless ending.eql?(s(:int, -1))
201
-
202
- emit_type(receiver, :drop, start)
203
- end
204
-
205
180
  # Emit mutation from `to_i` to `Integer(...)`
206
181
  #
207
182
  # @return [undefined]
@@ -258,11 +233,7 @@ module Mutest
258
233
  #
259
234
  # @return [undefined]
260
235
  def emit_argument_propagation
261
- return unless arguments.one?
262
-
263
- node = Mutest::Util.one(arguments)
264
-
265
- emit(node) unless NOT_STANDALONE.include?(node.type)
236
+ emit_propagation(Mutest::Util.one(arguments)) if arguments.one?
266
237
  end
267
238
 
268
239
  # Emit receiver mutations
@@ -270,6 +241,7 @@ module Mutest
270
241
  # @return [undefined]
271
242
  def mutate_receiver
272
243
  return unless receiver
244
+
273
245
  emit_implicit_self
274
246
  emit_receiver_mutations do |node|
275
247
  !n_nil?(node)
@@ -296,7 +268,7 @@ module Mutest
296
268
  replacements
297
269
  end
298
270
  end
299
- end # Send
300
- end # Node
301
- end # Mutator
302
- end # Mutest
271
+ end
272
+ end
273
+ end
274
+ end
@@ -32,8 +32,8 @@ module Mutest
32
32
  def emit_attribute_read
33
33
  emit_type(receiver, selector[ATTRIBUTE_RANGE].to_sym)
34
34
  end
35
- end # AttributeAssignment
36
- end # Send
37
- end # Node
38
- end # Mutator
39
- end # Mutest
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -38,8 +38,8 @@ module Mutest
38
38
  def emit_not_equality_mutation(new_operator)
39
39
  emit(n_not(s(:send, left, new_operator, right)))
40
40
  end
41
- end # Binary
42
- end # Send
43
- end # Node
44
- end # Mutator
45
- end # Mutest
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end