Commit 0d1fc95
build(#889): drop VOID_METHOD_CALLS PIT mutator — kill equivalent-mutant noise
PIT's VOID_METHOD_CALLS mutator targets void-method invocations. In
Kotlin bytecode this mostly produces equivalent-mutant noise on compiler-
synthesized calls:
- Intrinsics::checkNotNullParameter / checkNotNullExpressionValue
(Kotlin non-null param checks + !! safety — language-level guarantees,
removing them doesn't change observable behavior for legal inputs)
- InlineMarker::finallyStart / finallyEnd (inline-function markers)
- CollectionsKt::throwIndexOverflow (forEachIndexed overflow guard)
#889 issue body explicitly flags these as "don't chase" equivalent
mutants. Per the same note, configure PIT to exclude them rather than
write tests that can't actually kill them.
Removed VOID_METHOD_CALLS from the DEFAULTS mutator set. Kept all 10
other DEFAULTS (CONDITIONALS_BOUNDARY, MATH, NEGATE_CONDITIONALS, the
RETURNS family, etc.).
**Measured impact (full PIT re-run):**
| | Before | After | Δ |
|---|---|---|---|
| KILLED | 1951 | 1817 | −134 (some real VOID kills now gone too) |
| NO_COVERAGE | 765 | 570 | −195 |
| SURVIVED | 522 | 251 | −271 |
| Unkilled total | 1287 | 821 | **−466** |
| Mutation score | 58.0% | **66.0%** | **+8.0pp** |
Per-cluster unkilled drops:
- GenerableSupportKt: 26 → 17 (−9) [#1975, already closed]
- LenientJsonParser$Parser: 29 → 17 (−12) [#1980, already closed]
- LiveRunner: 28 → 20 (−8) [#1978, open]
- LiveShow: 33 → 11 (−22) [#1979, hits <12 target — bonus close]
- McpClient: 102 → 97 [#1973, open]
- ClaudeClient: 74 → 62 [#1974, open]
- McpServer: 55 → 43 [#1976, open]
- OpenAiClient: 45 → 26 [#1977, open]
Trade-off: also drops ~5 legitimate VOID-call mutants on real methods
(e.g. removed `skipWs()`). Those are mostly partially-redundant with
adjacent calls anyway; the noise reduction is overwhelmingly worth it.
Revisit when an `arcmutate-kotlin-equivalence-filter` plugin lands for
per-call-target filtering.
Closes the noise-cleanup recommendation from #889's umbrella note.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>1 parent 262ad39 commit 0d1fc95
1 file changed
Lines changed: 28 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
99 | 99 | | |
100 | 100 | | |
101 | 101 | | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
102 | 130 | | |
103 | 131 | | |
104 | 132 | | |
| |||
0 commit comments