=== tests/cases/conformance/expressions/binaryOperators/additionOperator/additionOperatorWithStringAndEveryType.ts === enum E { a, b, c } >E : E, Symbol(E, Decl(additionOperatorWithStringAndEveryType.ts, 0, 0)) >a : E, Symbol(E.a, Decl(additionOperatorWithStringAndEveryType.ts, 0, 8)) >b : E, Symbol(E.b, Decl(additionOperatorWithStringAndEveryType.ts, 0, 11)) >c : E, Symbol(E.c, Decl(additionOperatorWithStringAndEveryType.ts, 0, 14)) var a: any; >a : any, Symbol(a, Decl(additionOperatorWithStringAndEveryType.ts, 2, 3)) var b: boolean; >b : boolean, Symbol(b, Decl(additionOperatorWithStringAndEveryType.ts, 3, 3)) var c: number; >c : number, Symbol(c, Decl(additionOperatorWithStringAndEveryType.ts, 4, 3)) var d: string; >d : string, Symbol(d, Decl(additionOperatorWithStringAndEveryType.ts, 5, 3)) var e: Object; >e : Object, Symbol(e, Decl(additionOperatorWithStringAndEveryType.ts, 6, 3)) >Object : Object, Symbol(Object, Decl(lib.d.ts, 92, 1), Decl(lib.d.ts, 223, 11)) var f: void; >f : void, Symbol(f, Decl(additionOperatorWithStringAndEveryType.ts, 7, 3)) var g: E; >g : E, Symbol(g, Decl(additionOperatorWithStringAndEveryType.ts, 8, 3)) >E : E, Symbol(E, Decl(additionOperatorWithStringAndEveryType.ts, 0, 0)) var x: string; >x : string, Symbol(x, Decl(additionOperatorWithStringAndEveryType.ts, 10, 3)) // string could plus every type, and the result is always string // string as left operand var r1 = x + a; >r1 : string, Symbol(r1, Decl(additionOperatorWithStringAndEveryType.ts, 14, 3)) >x + a : string >x : string, Symbol(x, Decl(additionOperatorWithStringAndEveryType.ts, 10, 3)) >a : any, Symbol(a, Decl(additionOperatorWithStringAndEveryType.ts, 2, 3)) var r2 = x + b; >r2 : string, Symbol(r2, Decl(additionOperatorWithStringAndEveryType.ts, 15, 3)) >x + b : string >x : string, Symbol(x, Decl(additionOperatorWithStringAndEveryType.ts, 10, 3)) >b : boolean, Symbol(b, Decl(additionOperatorWithStringAndEveryType.ts, 3, 3)) var r3 = x + c; >r3 : string, Symbol(r3, Decl(additionOperatorWithStringAndEveryType.ts, 16, 3)) >x + c : string >x : string, Symbol(x, Decl(additionOperatorWithStringAndEveryType.ts, 10, 3)) >c : number, Symbol(c, Decl(additionOperatorWithStringAndEveryType.ts, 4, 3)) var r4 = x + d; >r4 : string, Symbol(r4, Decl(additionOperatorWithStringAndEveryType.ts, 17, 3)) >x + d : string >x : string, Symbol(x, Decl(additionOperatorWithStringAndEveryType.ts, 10, 3)) >d : string, Symbol(d, Decl(additionOperatorWithStringAndEveryType.ts, 5, 3)) var r5 = x + e; >r5 : string, Symbol(r5, Decl(additionOperatorWithStringAndEveryType.ts, 18, 3)) >x + e : string >x : string, Symbol(x, Decl(additionOperatorWithStringAndEveryType.ts, 10, 3)) >e : Object, Symbol(e, Decl(additionOperatorWithStringAndEveryType.ts, 6, 3)) var r6 = x + f; >r6 : string, Symbol(r6, Decl(additionOperatorWithStringAndEveryType.ts, 19, 3)) >x + f : string >x : string, Symbol(x, Decl(additionOperatorWithStringAndEveryType.ts, 10, 3)) >f : void, Symbol(f, Decl(additionOperatorWithStringAndEveryType.ts, 7, 3)) var r7 = x + g; >r7 : string, Symbol(r7, Decl(additionOperatorWithStringAndEveryType.ts, 20, 3)) >x + g : string >x : string, Symbol(x, Decl(additionOperatorWithStringAndEveryType.ts, 10, 3)) >g : E, Symbol(g, Decl(additionOperatorWithStringAndEveryType.ts, 8, 3)) // string as right operand var r8 = a + x; >r8 : string, Symbol(r8, Decl(additionOperatorWithStringAndEveryType.ts, 23, 3)) >a + x : string >a : any, Symbol(a, Decl(additionOperatorWithStringAndEveryType.ts, 2, 3)) >x : string, Symbol(x, Decl(additionOperatorWithStringAndEveryType.ts, 10, 3)) var r9 = b + x; >r9 : string, Symbol(r9, Decl(additionOperatorWithStringAndEveryType.ts, 24, 3)) >b + x : string >b : boolean, Symbol(b, Decl(additionOperatorWithStringAndEveryType.ts, 3, 3)) >x : string, Symbol(x, Decl(additionOperatorWithStringAndEveryType.ts, 10, 3)) var r10 = c + x; >r10 : string, Symbol(r10, Decl(additionOperatorWithStringAndEveryType.ts, 25, 3)) >c + x : string >c : number, Symbol(c, Decl(additionOperatorWithStringAndEveryType.ts, 4, 3)) >x : string, Symbol(x, Decl(additionOperatorWithStringAndEveryType.ts, 10, 3)) var r11 = d + x; >r11 : string, Symbol(r11, Decl(additionOperatorWithStringAndEveryType.ts, 26, 3)) >d + x : string >d : string, Symbol(d, Decl(additionOperatorWithStringAndEveryType.ts, 5, 3)) >x : string, Symbol(x, Decl(additionOperatorWithStringAndEveryType.ts, 10, 3)) var r12 = e + x; >r12 : string, Symbol(r12, Decl(additionOperatorWithStringAndEveryType.ts, 27, 3)) >e + x : string >e : Object, Symbol(e, Decl(additionOperatorWithStringAndEveryType.ts, 6, 3)) >x : string, Symbol(x, Decl(additionOperatorWithStringAndEveryType.ts, 10, 3)) var r13 = f + x; >r13 : string, Symbol(r13, Decl(additionOperatorWithStringAndEveryType.ts, 28, 3)) >f + x : string >f : void, Symbol(f, Decl(additionOperatorWithStringAndEveryType.ts, 7, 3)) >x : string, Symbol(x, Decl(additionOperatorWithStringAndEveryType.ts, 10, 3)) var r14 = g + x; >r14 : string, Symbol(r14, Decl(additionOperatorWithStringAndEveryType.ts, 29, 3)) >g + x : string >g : E, Symbol(g, Decl(additionOperatorWithStringAndEveryType.ts, 8, 3)) >x : string, Symbol(x, Decl(additionOperatorWithStringAndEveryType.ts, 10, 3)) // other cases var r15 = x + E; >r15 : string, Symbol(r15, Decl(additionOperatorWithStringAndEveryType.ts, 32, 3)) >x + E : string >x : string, Symbol(x, Decl(additionOperatorWithStringAndEveryType.ts, 10, 3)) >E : typeof E, Symbol(E, Decl(additionOperatorWithStringAndEveryType.ts, 0, 0)) var r16 = x + E.a; >r16 : string, Symbol(r16, Decl(additionOperatorWithStringAndEveryType.ts, 33, 3)) >x + E.a : string >x : string, Symbol(x, Decl(additionOperatorWithStringAndEveryType.ts, 10, 3)) >E.a : E, Symbol(E.a, Decl(additionOperatorWithStringAndEveryType.ts, 0, 8)) >E : typeof E, Symbol(E, Decl(additionOperatorWithStringAndEveryType.ts, 0, 0)) >a : E, Symbol(E.a, Decl(additionOperatorWithStringAndEveryType.ts, 0, 8)) var r17 = x + ''; >r17 : string, Symbol(r17, Decl(additionOperatorWithStringAndEveryType.ts, 34, 3)) >x + '' : string >x : string, Symbol(x, Decl(additionOperatorWithStringAndEveryType.ts, 10, 3)) >'' : string var r18 = x + 0; >r18 : string, Symbol(r18, Decl(additionOperatorWithStringAndEveryType.ts, 35, 3)) >x + 0 : string >x : string, Symbol(x, Decl(additionOperatorWithStringAndEveryType.ts, 10, 3)) >0 : number var r19 = x + { a: '' }; >r19 : string, Symbol(r19, Decl(additionOperatorWithStringAndEveryType.ts, 36, 3)) >x + { a: '' } : string >x : string, Symbol(x, Decl(additionOperatorWithStringAndEveryType.ts, 10, 3)) >{ a: '' } : { a: string; } >a : string, Symbol(a, Decl(additionOperatorWithStringAndEveryType.ts, 36, 15)) >'' : string var r20 = x + []; >r20 : string, Symbol(r20, Decl(additionOperatorWithStringAndEveryType.ts, 37, 3)) >x + [] : string >x : string, Symbol(x, Decl(additionOperatorWithStringAndEveryType.ts, 10, 3)) >[] : undefined[]