==== tests/cases/conformance/expressions/unaryOperators/decrementOperator/decrementOperatorWithUnsupportedBooleanType.ts (29 errors) ==== // -- operator on boolean type var BOOLEAN: boolean; function foo(): boolean { return true; } class A { public a: boolean; static foo() { return true; } } module M { export var n: boolean; } var objA = new A(); // boolean type var var ResultIsNumber1 = --BOOLEAN; ~~~~~~~ !!! An arithmetic operand must be of type 'any', 'number' or an enum type. var ResultIsNumber2 = BOOLEAN--; ~~~~~~~ !!! An arithmetic operand must be of type 'any', 'number' or an enum type. // boolean type literal var ResultIsNumber3 = --true; ~~~~ !!! An arithmetic operand must be of type 'any', 'number' or an enum type. var ResultIsNumber4 = --{ x: true, y: false }; ~~~~~~~~~~~~~~~~~~~~~ !!! An arithmetic operand must be of type 'any', 'number' or an enum type. var ResultIsNumber5 = --{ x: true, y: (n: boolean) => { return n; } }; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! An arithmetic operand must be of type 'any', 'number' or an enum type. var ResultIsNumber6 = true--; ~~~~ !!! An arithmetic operand must be of type 'any', 'number' or an enum type. var ResultIsNumber7 = { x: true, y: false }--; ~~~~~~~~~~~~~~~~~~~~~ !!! An arithmetic operand must be of type 'any', 'number' or an enum type. var ResultIsNumber8 = { x: true, y: (n: boolean) => { return n; } }--; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! An arithmetic operand must be of type 'any', 'number' or an enum type. // boolean type expressions var ResultIsNumber9 = --objA.a; ~~~~~~ !!! An arithmetic operand must be of type 'any', 'number' or an enum type. var ResultIsNumber10 = --M.n; ~~~ !!! An arithmetic operand must be of type 'any', 'number' or an enum type. var ResultIsNumber11 = --foo(); ~~~~~ !!! An arithmetic operand must be of type 'any', 'number' or an enum type. var ResultIsNumber12 = --A.foo(); ~~~~~~~ !!! An arithmetic operand must be of type 'any', 'number' or an enum type. var ResultIsNumber13 = foo()--; ~~~~~ !!! An arithmetic operand must be of type 'any', 'number' or an enum type. var ResultIsNumber14 = A.foo()--; ~~~~~~~ !!! An arithmetic operand must be of type 'any', 'number' or an enum type. var ResultIsNumber15 = objA.a--; ~~~~~~ !!! An arithmetic operand must be of type 'any', 'number' or an enum type. var ResultIsNumber16 = M.n--; ~~~ !!! An arithmetic operand must be of type 'any', 'number' or an enum type. // miss assignment operators --true; ~~~~ !!! An arithmetic operand must be of type 'any', 'number' or an enum type. --BOOLEAN; ~~~~~~~ !!! An arithmetic operand must be of type 'any', 'number' or an enum type. --foo(); ~~~~~ !!! An arithmetic operand must be of type 'any', 'number' or an enum type. --objA.a; ~~~~~~ !!! An arithmetic operand must be of type 'any', 'number' or an enum type. --M.n; ~~~ !!! An arithmetic operand must be of type 'any', 'number' or an enum type. --objA.a, M.n; ~~~~~~ !!! An arithmetic operand must be of type 'any', 'number' or an enum type. true--; ~~~~ !!! An arithmetic operand must be of type 'any', 'number' or an enum type. BOOLEAN--; ~~~~~~~ !!! An arithmetic operand must be of type 'any', 'number' or an enum type. foo()--; ~~~~~ !!! An arithmetic operand must be of type 'any', 'number' or an enum type. objA.a--; ~~~~~~ !!! An arithmetic operand must be of type 'any', 'number' or an enum type. M.n--; ~~~ !!! An arithmetic operand must be of type 'any', 'number' or an enum type. objA.a--, M.n--; ~~~~~~ !!! An arithmetic operand must be of type 'any', 'number' or an enum type. ~~~ !!! An arithmetic operand must be of type 'any', 'number' or an enum type.