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 toStringLiteral'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"'sbinary_to_atomcall) — atom content, handled as a whole byAtomLiteral; 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).