# `Mutare.Mutators.BitstringLiteral`
[🔗](https://github.com/foxbenjaminfox/mutare/blob/v0.2.1/lib/mutare/mutators/bitstring_literal.ex#L1)

Bitstring-literal mutation: collapse a non-empty `<<…>>` literal to the empty bitstring `<<>>`. Like the corresponding list, map, and tuple mutations, this tests whether the binary's contents affect the test results. A binary that is built but whose bytes no test pins down lets `<<>>` survive.

Not mutated — constructs that merely share the `<<…>>` AST shape:

  * an interpolated string (`"a#{x}b"`) — conceptually a string, left to `StringLiteral`'s domain (which mutates the whole interpolated string to `""`/`"mutare"`, the empty-bitstring collapse being the wrong shape for it);
  * a sigil's content (`~r/…/`, `~D[…]`) — the sigil mutators handle the whole node;
  * an interpolated quoted atom's content (the `<<>>` inside `:"a#{x}b"`'s `binary_to_atom` call) — atom content, handled as a whole by `AtomLiteral`; the analyzer never offers the wrapper here.

A bitstring in a *pattern* is left alone, so a match like `<<a, b>> = bin` is not corrupted. The segment *values* still mutate independently (a byte via `Literal`, a string segment via `StringLiteral`, an expression via `Arithmetic`, a `size(expr)` arg via `Literal`).

---

*Consult [api-reference.md](api-reference.md) for complete listing*
