Zig
Zig Mutations
StatementBlock
Before
pub fn foo() void {
bar();
}
After
pub fn foo() void {}
Condition
Before
pub fn foo() void {
if (x > 0) {
bar();
}
}
After
pub fn foo() void {
if (true) {
bar();
}
}
pub fn foo() void {
if (false) {
bar();
}
}
BinaryOp - Add
Before
pub fn foo() u32 {
return a + b;
}
After
pub fn foo() u32 {
return a - b;
}
pub fn foo() u32 {
return a * b;
}
BinaryOp - And
Before
pub fn foo() bool {
return a and b;
}
After
pub fn foo() bool {
return a or b;
}
BinaryOp - BitAnd
Before
pub fn foo() u32 {
return a & b;
}
After
pub fn foo() u32 {
return a | b;
}
pub fn foo() u32 {
return a ^ b;
}
BinaryOp - BitOr
Before
pub fn foo() u32 {
return a | b;
}
After
pub fn foo() u32 {
return a & b;
}
pub fn foo() u32 {
return a ^ b;
}
BinaryOp - BitXor
Before
pub fn foo() u32 {
return a ^ b;
}
After
pub fn foo() u32 {
return a & b;
}
pub fn foo() u32 {
return a | b;
}
BinaryOp - Div
Before
pub fn foo() u32 {
return a / b;
}
After
pub fn foo() u32 {
return a * b;
}
pub fn foo() u32 {
return a - b;
}
BinaryOp - Eq
Before
pub fn foo() bool {
return a == b;
}
After
pub fn foo() bool {
return a != b;
}
BinaryOp - Gt
Before
pub fn foo() bool {
return a > b;
}
After
pub fn foo() bool {
return a <= b;
}
pub fn foo() bool {
return a >= b;
}
BinaryOp - Gte
Before
pub fn foo() bool {
return a >= b;
}
After
pub fn foo() bool {
return a < b;
}
pub fn foo() bool {
return a > b;
}
BinaryOp - Lt
Before
pub fn foo() bool {
return a < b;
}
After
pub fn foo() bool {
return a >= b;
}
pub fn foo() bool {
return a <= b;
}
BinaryOp - Lte
Before
pub fn foo() bool {
return a <= b;
}
After
pub fn foo() bool {
return a > b;
}
pub fn foo() bool {
return a < b;
}
BinaryOp - Mul
Before
pub fn foo() u32 {
return a * b;
}
After
pub fn foo() u32 {
return a / b;
}
pub fn foo() u32 {
return a + b;
}
BinaryOp - Or
Before
pub fn foo() bool {
return a or b;
}
After
pub fn foo() bool {
return a and b;
}
BinaryOp - Rem
Before
pub fn foo() u32 {
return a % b;
}
After
pub fn foo() u32 {
return a * b;
}
pub fn foo() u32 {
return a / b;
}
BinaryOp - Shl
Before
pub fn foo() u32 {
return a << b;
}
After
pub fn foo() u32 {
return a >> b;
}
BinaryOp - Shr
Before
pub fn foo() u32 {
return a >> b;
}
After
pub fn foo() u32 {
return a << b;
}
BinaryOp - Ne
Before
pub fn foo() bool {
return a != b;
}
After
pub fn foo() bool {
return a == b;
}
BinaryOp - Sub
Before
pub fn foo() u32 {
return a - b;
}
After
pub fn foo() u32 {
return a + b;
}
pub fn foo() u32 {
return a / b;
}
Assign - AddAssign
Before
pub fn foo() void {
x += y;
}
After
pub fn foo() void {
x -= y;
}
pub fn foo() void {
x = y;
}
Assign - BitAndAssign
Before
pub fn foo() void {
x &= y;
}
After
pub fn foo() void {
x |= y;
}
pub fn foo() void {
x = y;
}
Assign - BitOrAssign
Before
pub fn foo() void {
x |= y;
}
After
pub fn foo() void {
x &= y;
}
pub fn foo() void {
x = y;
}
Assign - BitXorAssign
Before
pub fn foo() void {
x ^= y;
}
After
pub fn foo() void {
x &= y;
}
pub fn foo() void {
x = y;
}
Assign - DivAssign
Before
pub fn foo() void {
x /= y;
}
After
pub fn foo() void {
x *= y;
}
pub fn foo() void {
x = y;
}
Assign - MulAssign
Before
pub fn foo() void {
x *= y;
}
After
pub fn foo() void {
x /= y;
}
pub fn foo() void {
x = y;
}
Assign - NormalAssign
Before
pub fn foo() void {
x = y;
}
After
pub fn foo() void {
x += y;
}
pub fn foo() void {
x -= y;
}
Assign - RemAssign
Before
pub fn foo() void {
x %= y;
}
After
pub fn foo() void {
x *= y;
}
pub fn foo() void {
x = y;
}
Assign - ShlAssign
Before
pub fn foo() void {
x <<= y;
}
After
pub fn foo() void {
x >>= y;
}
pub fn foo() void {
x = y;
}
Assign - ShrAssign
Before
pub fn foo() void {
x >>= y;
}
After
pub fn foo() void {
x <<= y;
}
pub fn foo() void {
x = y;
}
Assign - SubAssign
Before
pub fn foo() void {
x -= y;
}
After
pub fn foo() void {
x += y;
}
pub fn foo() void {
x = y;
}
ArrayDecl - Inline
Before
pub fn foo() void {
const arr = [_]u32{ 10, 20, 30 };
}
After
pub fn foo() void {
const arr = [_]u32.{};
}
Literal - BoolTrue
Before
pub fn foo() bool {
return true;
}
After
pub fn foo() bool {
return false;
}
Literal - BoolFalse
Before
pub fn foo() bool {
return false;
}
After
pub fn foo() bool {
return true;
}
Literal - String
Before
pub fn foo() void {
const s = "hello";
}
After
pub fn foo() void {
const s = "";
}
Literal - EmptyString
Before
pub fn foo() void {
const s = "";
}
After
pub fn foo() void {
const s = "bough";
}
Literal - Number
Before
pub fn foo() u32 {
return 42;
}
After
pub fn foo() u32 {
return 0;
}
pub fn foo() u32 {
return 1;
}
pub fn foo() u32 {
return std.math.maxInt(u64);
}
UnaryNot
Before
pub fn foo() bool {
return !x;
}
After
pub fn foo() bool {
return x;
}
SwitchCase
Before
pub fn foo(x: u8) u8 {
return switch (x) {
100 => 200,
300 => 400,
else => 255,
};
}
After
pub fn foo(x: u8) u8 {
return switch (x) {
,
300 => 400,
else => 255,
};
}
pub fn foo(x: u8) u8 {
return switch (x) {
100 => 200,
,
else => 255,
};
}