Ruby

Ruby Mutations

StatementBlock

Before

def foo
  puts "hello"
end

After

def foo
  nil
end

Condition

Before

if x > 0
  puts x
end

After

if true
  puts x
end
if false
  puts x
end

BinaryOp - Add

Before

x = a + b

After

x = a - b
x = a * b

BinaryOp - And

Before

x = a && b

After

x = a || b

BinaryOp - BitAnd

Before

x = a & b

After

x = a | b
x = a ^ b

BinaryOp - BitOr

Before

x = a | b

After

x = a & b
x = a ^ b

BinaryOp - BitXor

Before

x = a ^ b

After

x = a & b
x = a | b

BinaryOp - Div

Before

x = a / b

After

x = a * b
x = a - b

BinaryOp - Eq

Before

x = a == b

After

x = a != b

BinaryOp - Gt

Before

x = a > b

After

x = a <= b
x = a >= b

BinaryOp - Gte

Before

x = a >= b

After

x = a < b
x = a > b

BinaryOp - Lt

Before

x = a < b

After

x = a >= b
x = a <= b

BinaryOp - Lte

Before

x = a <= b

After

x = a > b
x = a < b

BinaryOp - Mul

Before

x = a * b

After

x = a / b
x = a + b

BinaryOp - Or

Before

x = a || b

After

x = a && b

BinaryOp - Rem

Before

x = a % b

After

x = a * b
x = a / b

BinaryOp - Shl

Before

x = a << b

After

x = a >> b

BinaryOp - Shr

Before

x = a >> b

After

x = a << b

BinaryOp - Ne

Before

x = a != b

After

x = a == b

BinaryOp - Sub

Before

x = a - b

After

x = a + b
x = a / b

Assign - AddAssign

Before

x += y

After

x -= y
x = y

Assign - BitAndAssign

Before

x &= y

After

x |= y
x = y

Assign - BitOrAssign

Before

x |= y

After

x &= y
x = y

Assign - BitXorAssign

Before

x ^= y

After

x &= y
x = y

Assign - DivAssign

Before

x /= y

After

x *= y
x = y

Assign - MulAssign

Before

x *= y

After

x /= y
x = y

Assign - NormalAssign

Before

x = y

After

x += y
x -= y

Assign - RemAssign

Before

x %= y

After

x *= y
x = y

Assign - ShlAssign

Before

x <<= y

After

x >>= y
x = y

Assign - ShrAssign

Before

x >>= y

After

x <<= y
x = y

Assign - SubAssign

Before

x -= y

After

x += y
x = y

ArrayDecl - Inline

Before

x = [1, 2, 3]

After

x = []

Literal - BoolTrue

Before

x = true

After

x = false

Literal - BoolFalse

Before

x = false

After

x = true

Literal - String

Before

x = "hello"

After

x = ""

Literal - EmptyString

Before

x = ""

After

x = "bough"

Literal - Number

Before

x = 42

After

x = 0
x = 1
x = -1
x = Float::INFINITY
x = -Float::INFINITY
x = Float::NAN

DictDecl

Before

x = {a: 1, b: 2}

After

x = {}

UnaryNot

Before

x = !y

After

x = y

SwitchCase

Before

case x
when 1
  "one"
when 2
  "two"
end

After

case x

when 2
  "two"
end
case x
when 1
  "one"

end