//// [incrementAndDecrement.ts]
enum E { A, B, C };
var x = 4;
var e = E.B;
var a: any;
var w = window;

// Assign to expression++
x++ = 4; // Error

// Assign to expression--
x-- = 5; // Error

// Assign to++expression
++x = 4; // Error

// Assign to--expression
--x = 5; // Error

// Pre and postfix++ on number
x++;
x--;
++x;
--x;
++x++; // Error
--x--; // Error
++x--; // Error
--x++; // Error

// Pre and postfix++ on enum
e++;
e--;
++e;
--e;
++e++; // Error
--e--; // Error
++e--; // Error
--e++; // Error

// Pre and postfix++ on value of type 'any'
a++;
a--;
++a;
--a;
++a++; // Error
--a--; // Error
++a--; // Error
--a++; // Error


// Pre and postfix++ on other types
w++; // Error
w--; // Error
++w; // Error
--w; // Error
++w++; // Error
--w--; // Error
++w--; // Error
--w++; // Error




//// [incrementAndDecrement.js]
var E;
(function (E) {
    E[E["A"] = 0] = "A";
    E[E["B"] = 1] = "B";
    E[E["C"] = 2] = "C";
})(E || (E = {}));
;
var x = 4;
var e = E.B;
var a;
var w = window;
// Assign to expression++
x++;
4; // Error
// Assign to expression--
x--;
5; // Error
// Assign to++expression
++x;
4; // Error
// Assign to--expression
--x;
5; // Error
// Pre and postfix++ on number
x++;
x--;
++x;
--x;
++x;
++; // Error
--x;
--; // Error
++x;
--; // Error
--x;
++; // Error
// Pre and postfix++ on enum
e++;
e--;
++e;
--e;
++e;
++; // Error
--e;
--; // Error
++e;
--; // Error
--e;
++; // Error
// Pre and postfix++ on value of type 'any'
a++;
a--;
++a;
--a;
++a;
++; // Error
--a;
--; // Error
++a;
--; // Error
--a;
++; // Error
// Pre and postfix++ on other types
w++; // Error
w--; // Error
++w; // Error
--w; // Error
++w;
++; // Error
--w;
--; // Error
++w;
--; // Error
--w;
++; // Error
