mutest 0.0.9 → 0.0.10

Sign up to get free protection for your applications and to get access to all the features.
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