HORIZON HASKELLDocslts/ghc-9.14.x3e2d5682026-10-11Search names, modules, packages, or :: a typeCtrl K

GHC 9.14.1 · lts/ghc-9.14.x · 3e2d568 · 2026-10-11

Modulesydtest-mutation-runtime-0.2.0.0Haskell2010

Test.Syd.Mutation.Manifest

  • 3 types
  • 8 values
datadata MutationRecord
#

One discovered mutation site, as recorded by the plugin.

Constructors

Instances9Eq, Show, Generic, FromJSON, ToJSON, Validity, …
newtypenewtype MutationGroup
#

A group of mutation records produced by applying one operator at one source location. Every group has at least one record in practice, but the type does not enforce non-emptiness — the plugin can drop alternatives during validation.

Within-group fail-fast (in the runner) skips remaining mutations in a group once one of them survives or is uncovered.

Instances9Eq, Show, Generic, FromJSON, ToJSON, Validity, …
newtypenewtype MutationManifest
#

All mutation groups discovered in one or more modules by the plugin.

Instances11Eq, Show, Generic, Semigroup, Monoid, FromJSON, …

The reserved operator name carried by a control (no-op) mutation.

A control mutation is a deliberate non-diff: the plugin inserts one every few real mutations, wrapping an expression as ifMutation cmid e e - the same expression on both branches. It changes no behaviour, so it is expected to survive. If a control is killed, the mutation testing itself is unsound (a flaky/nondeterministic suite or a harness bug) rather than a real kill, so the report flags it separately and fails the run like a survivor.

The marker rides the existing mutRecOperator field rather than a dedicated record field; isControlOperator is the single point of truth for the test.