==== tests/cases/conformance/expressions/unaryOperators/incrementOperator/incrementOperatorWithUnsupportedStringType.ts (39 errors) ==== // ++ operator on string type var STRING: string; var STRING1: string[] = ["", ""]; function foo(): string { return ""; } class A { public a: string; static foo() { return ""; } } module M { export var n: string; } var objA = new A(); // string type var var ResultIsNumber1 = ++STRING; ~~~~~~ !!! An arithmetic operand must be of type 'any', 'number' or an enum type. var ResultIsNumber2 = ++STRING1; ~~~~~~~ !!! An arithmetic operand must be of type 'any', 'number' or an enum type. var ResultIsNumber3 = STRING++; ~~~~~~ !!! An arithmetic operand must be of type 'any', 'number' or an enum type. var ResultIsNumber4 = STRING1++; ~~~~~~~ !!! An arithmetic operand must be of type 'any', 'number' or an enum type. // string type literal var ResultIsNumber5 = ++""; ~~ !!! An arithmetic operand must be of type 'any', 'number' or an enum type. var ResultIsNumber6 = ++{ x: "", y: "" }; ~~~~~~~~~~~~~~~~ !!! An arithmetic operand must be of type 'any', 'number' or an enum type. var ResultIsNumber7 = ++{ x: "", y: (s: string) => { return s; } }; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! An arithmetic operand must be of type 'any', 'number' or an enum type. var ResultIsNumber8 = ""++; ~~ !!! An arithmetic operand must be of type 'any', 'number' or an enum type. var ResultIsNumber9 = { x: "", y: "" }++; ~~~~~~~~~~~~~~~~ !!! An arithmetic operand must be of type 'any', 'number' or an enum type. var ResultIsNumber10 = { x: "", y: (s: string) => { return s; } }++; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! An arithmetic operand must be of type 'any', 'number' or an enum type. // string type expressions var ResultIsNumber11 = ++objA.a; ~~~~~~ !!! An arithmetic operand must be of type 'any', 'number' or an enum type. var ResultIsNumber12 = ++M.n; ~~~ !!! An arithmetic operand must be of type 'any', 'number' or an enum type. var ResultIsNumber13 = ++STRING1[0]; ~~~~~~~~~~ !!! An arithmetic operand must be of type 'any', 'number' or an enum type. var ResultIsNumber14 = ++foo(); ~~~~~ !!! An arithmetic operand must be of type 'any', 'number' or an enum type. var ResultIsNumber15 = ++A.foo(); ~~~~~~~ !!! An arithmetic operand must be of type 'any', 'number' or an enum type. var ResultIsNumber16 = ++(STRING + STRING); ~~~~~~~~~~~~~~~~~ !!! An arithmetic operand must be of type 'any', 'number' or an enum type. var ResultIsNumber17 = objA.a++; ~~~~~~ !!! An arithmetic operand must be of type 'any', 'number' or an enum type. var ResultIsNumber18 = M.n++; ~~~ !!! An arithmetic operand must be of type 'any', 'number' or an enum type. var ResultIsNumber19 = STRING1[0]++; ~~~~~~~~~~ !!! An arithmetic operand must be of type 'any', 'number' or an enum type. var ResultIsNumber20 = foo()++; ~~~~~ !!! An arithmetic operand must be of type 'any', 'number' or an enum type. var ResultIsNumber21 = A.foo()++; ~~~~~~~ !!! An arithmetic operand must be of type 'any', 'number' or an enum type. var ResultIsNumber22 = (STRING + STRING)++; ~~~~~~~~~~~~~~~~~ !!! An arithmetic operand must be of type 'any', 'number' or an enum type. // miss assignment operators ++""; ~~ !!! An arithmetic operand must be of type 'any', 'number' or an enum type. ++STRING; ~~~~~~ !!! An arithmetic operand must be of type 'any', 'number' or an enum type. ++STRING1; ~~~~~~~ !!! An arithmetic operand must be of type 'any', 'number' or an enum type. ++STRING1[0]; ~~~~~~~~~~ !!! 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. STRING++; ~~~~~~ !!! An arithmetic operand must be of type 'any', 'number' or an enum type. STRING1++; ~~~~~~~ !!! An arithmetic operand must be of type 'any', 'number' or an enum type. STRING1[0]++; ~~~~~~~~~~ !!! 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.