 ok c is 3
 
 
-# Instanceof.
-ok new String instanceof String
-ok new Number not instanceof String
+# Bitwise operators:
+ok (10 &   3) is 2
+ok (10 |   3) is 11
+ok (10 ^   3) is 9
+ok (10 <<  3) is 80
+ok (10 >>  3) is 1
+ok (10 >>> 3) is 1
+
+num = 10; ok (num <<=  3) is 80
+num = 10; ok (num >>=  3) is 1
+num = 10; ok (num >>>= 3) is 1
+num = 10; ok (num &=   3) is 2
+num = 10; ok (num ^=   3) is 9
+num = 10; ok (num |=   3) is 11
 
 
 #737: `in` should have higher precedence than logical operators.

ok 1 > i++ < 1, 'chained operations should evaluate each value only once'


# `===` and `is` should be interchangeable.
a = 1
b = '1'

ok a == b
ok not (a === b)
ok not (a is  b)


# Allow "if x not in y"
obj = {a: true}
ok 'a' in obj
ok 'b' not in obj

# And for "a in b" with array presence.
ok 200 of [100, 200, 300]
array = [100, 200, 300]
ok 200 of array
ok 1 not of array
ok array[0]++ of [99, 100], 'should cache testee'

# And with array presence true an instance variable.
obj = {
  list: [1, 2, 3, 4, 5]
  in_list: (value) -> value of @list
}
ok obj.in_list 4
ok not obj.in_list 0

# Non-spaced values still work.
x = 10
y = -5

ok x*-y is 50
ok x*+y is -50


# Compound operators.
one  = 1
two  = 0
one ||= 2
two ||= 2

eq one, 1
eq two, 2

zero = 0

zero &&= 'one'
one  &&= 'one'

eq zero, 0
eq one , 'one'


# Compound assignment should be careful about caching variables.
count = 0
list = []




# Multiple operators should space themselves.
eq(+ +1, - -1)


eq '', do do do -> -> -> do String
eq 1, do -> 1
eq @, do => @


x = 'xx'
