Go
Go Mutations
StatementBlock
Before
package p; func f() { x = 1 }
After
package p; func f() {}
Condition
Before
package p; func f() { if x > 0 { return } }
After
package p; func f() { if true { return } }
package p; func f() { if false { return } }
BinaryOp - Add
Before
package p; var x = a + b
After
package p; var x = a - b
package p; var x = a * b
BinaryOp - And
Before
package p; var x = a && b
After
package p; var x = a || b
BinaryOp - BitAnd
Before
package p; var x = a & b
After
package p; var x = a | b
package p; var x = a ^ b
BinaryOp - BitOr
Before
package p; var x = a | b
After
package p; var x = a & b
package p; var x = a ^ b
BinaryOp - BitXor
Before
package p; var x = a ^ b
After
package p; var x = a & b
package p; var x = a | b
BinaryOp - Div
Before
package p; var x = a / b
After
package p; var x = a * b
package p; var x = a - b
BinaryOp - Eq
Before
package p; var x = a == b
After
package p; var x = a != b
BinaryOp - Gt
Before
package p; var x = a > b
After
package p; var x = a <= b
package p; var x = a >= b
BinaryOp - Gte
Before
package p; var x = a >= b
After
package p; var x = a < b
package p; var x = a > b
BinaryOp - Lt
Before
package p; var x = a < b
After
package p; var x = a >= b
package p; var x = a <= b
BinaryOp - Lte
Before
package p; var x = a <= b
After
package p; var x = a > b
package p; var x = a < b
BinaryOp - Mul
Before
package p; var x = a * b
After
package p; var x = a / b
package p; var x = a + b
BinaryOp - Or
Before
package p; var x = a || b
After
package p; var x = a && b
BinaryOp - Rem
Before
package p; var x = a % b
After
package p; var x = a * b
package p; var x = a / b
BinaryOp - Shl
Before
package p; var x = a << b
After
package p; var x = a >> b
BinaryOp - Shr
Before
package p; var x = a >> b
After
package p; var x = a << b
BinaryOp - Ne
Before
package p; var x = a != b
After
package p; var x = a == b
BinaryOp - Sub
Before
package p; var x = a - b
After
package p; var x = a + b
package p; var x = a / b
Assign - AddAssign
Before
package p; func f() { x += 1 }
After
package p; func f() { x -= 1 }
package p; func f() { x = 1 }
Assign - BitAndAssign
Before
package p; func f() { x &= 1 }
After
package p; func f() { x |= 1 }
package p; func f() { x = 1 }
Assign - BitOrAssign
Before
package p; func f() { x |= 1 }
After
package p; func f() { x &= 1 }
package p; func f() { x = 1 }
Assign - BitXorAssign
Before
package p; func f() { x ^= 1 }
After
package p; func f() { x &= 1 }
package p; func f() { x = 1 }
Assign - DivAssign
Before
package p; func f() { x /= 1 }
After
package p; func f() { x *= 1 }
package p; func f() { x = 1 }
Assign - MulAssign
Before
package p; func f() { x *= 1 }
After
package p; func f() { x /= 1 }
package p; func f() { x = 1 }
Assign - NormalAssign
Before
package p; func f() { x = 1 }
After
package p; func f() { x += 1 }
package p; func f() { x -= 1 }
Assign - RemAssign
Before
package p; func f() { x %= 1 }
After
package p; func f() { x *= 1 }
package p; func f() { x = 1 }
Assign - ShlAssign
Before
package p; func f() { x <<= 1 }
After
package p; func f() { x >>= 1 }
package p; func f() { x = 1 }
Assign - ShrAssign
Before
package p; func f() { x >>= 1 }
After
package p; func f() { x <<= 1 }
package p; func f() { x = 1 }
Assign - SubAssign
Before
package p; func f() { x -= 1 }
After
package p; func f() { x += 1 }
package p; func f() { x = 1 }
ArrayDecl - Inline
Before
package p; var x = []int{1, 2, 3}
After
package p; var x = []int{}
Literal - BoolTrue
Before
package p; var x = true
After
package p; var x = false
Literal - BoolFalse
Before
package p; var x = false
After
package p; var x = true
Literal - String
Before
package p; var x = "hello"
After
package p; var x = ""
Literal - EmptyString
Before
package p; var x = ""
After
package p; var x = "bough"
Literal - Number
Before
package p; var x = 42
After
package p; var x = 0
package p; var x = 1
package p; var x = -1
DictDecl
Before
package p; var x = map[string]int{"a": 1}
After
package p; var x = map[string]int{}
UnaryNot
Before
package p; func f() { x := !y }
After
package p; func f() { x := y }
SwitchCase
Before
package p; func f() { switch x { case 1: return } }
After
package p; func f() { switch x { } }