==== tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipPrimitiveType.ts (144 errors) ==== enum E { a, b, c } var a: number; var b: boolean; var c: string; var d: void; var e: E; // operator < var r1a1 = a < b; ~~~~~ !!! Operator '<' cannot be applied to types 'number' and 'boolean'. var r1a1 = a < c; ~~~~~ !!! Operator '<' cannot be applied to types 'number' and 'string'. var r1a1 = a < d; ~~~~~ !!! Operator '<' cannot be applied to types 'number' and 'void'. var r1a1 = a < e; // no error, expected var r1b1 = b < a; ~~~~~ !!! Operator '<' cannot be applied to types 'boolean' and 'number'. var r1b1 = b < c; ~~~~~ !!! Operator '<' cannot be applied to types 'boolean' and 'string'. var r1b1 = b < d; ~~~~~ !!! Operator '<' cannot be applied to types 'boolean' and 'void'. var r1b1 = b < e; ~~~~~ !!! Operator '<' cannot be applied to types 'boolean' and 'E'. var r1c1 = c < a; ~~~~~ !!! Operator '<' cannot be applied to types 'string' and 'number'. var r1c1 = c < b; ~~~~~ !!! Operator '<' cannot be applied to types 'string' and 'boolean'. var r1c1 = c < d; ~~~~~ !!! Operator '<' cannot be applied to types 'string' and 'void'. var r1c1 = c < e; ~~~~~ !!! Operator '<' cannot be applied to types 'string' and 'E'. var r1d1 = d < a; ~~~~~ !!! Operator '<' cannot be applied to types 'void' and 'number'. var r1d1 = d < b; ~~~~~ !!! Operator '<' cannot be applied to types 'void' and 'boolean'. var r1d1 = d < c; ~~~~~ !!! Operator '<' cannot be applied to types 'void' and 'string'. var r1d1 = d < e; ~~~~~ !!! Operator '<' cannot be applied to types 'void' and 'E'. var r1e1 = e < a; // no error, expected var r1e1 = e < b; ~~~~~ !!! Operator '<' cannot be applied to types 'E' and 'boolean'. var r1e1 = e < c; ~~~~~ !!! Operator '<' cannot be applied to types 'E' and 'string'. var r1e1 = e < d; ~~~~~ !!! Operator '<' cannot be applied to types 'E' and 'void'. // operator > var r2a1 = a > b; ~~~~~ !!! Operator '>' cannot be applied to types 'number' and 'boolean'. var r2a1 = a > c; ~~~~~ !!! Operator '>' cannot be applied to types 'number' and 'string'. var r2a1 = a > d; ~~~~~ !!! Operator '>' cannot be applied to types 'number' and 'void'. var r2a1 = a > e; // no error, expected var r2b1 = b > a; ~~~~~ !!! Operator '>' cannot be applied to types 'boolean' and 'number'. var r2b1 = b > c; ~~~~~ !!! Operator '>' cannot be applied to types 'boolean' and 'string'. var r2b1 = b > d; ~~~~~ !!! Operator '>' cannot be applied to types 'boolean' and 'void'. var r2b1 = b > e; ~~~~~ !!! Operator '>' cannot be applied to types 'boolean' and 'E'. var r2c1 = c > a; ~~~~~ !!! Operator '>' cannot be applied to types 'string' and 'number'. var r2c1 = c > b; ~~~~~ !!! Operator '>' cannot be applied to types 'string' and 'boolean'. var r2c1 = c > d; ~~~~~ !!! Operator '>' cannot be applied to types 'string' and 'void'. var r2c1 = c > e; ~~~~~ !!! Operator '>' cannot be applied to types 'string' and 'E'. var r2d1 = d > a; ~~~~~ !!! Operator '>' cannot be applied to types 'void' and 'number'. var r2d1 = d > b; ~~~~~ !!! Operator '>' cannot be applied to types 'void' and 'boolean'. var r2d1 = d > c; ~~~~~ !!! Operator '>' cannot be applied to types 'void' and 'string'. var r2d1 = d > e; ~~~~~ !!! Operator '>' cannot be applied to types 'void' and 'E'. var r2e1 = e > a; // no error, expected var r2e1 = e > b; ~~~~~ !!! Operator '>' cannot be applied to types 'E' and 'boolean'. var r2e1 = e > c; ~~~~~ !!! Operator '>' cannot be applied to types 'E' and 'string'. var r2e1 = e > d; ~~~~~ !!! Operator '>' cannot be applied to types 'E' and 'void'. // operator <= var r3a1 = a <= b; ~~~~~~ !!! Operator '<=' cannot be applied to types 'number' and 'boolean'. var r3a1 = a <= c; ~~~~~~ !!! Operator '<=' cannot be applied to types 'number' and 'string'. var r3a1 = a <= d; ~~~~~~ !!! Operator '<=' cannot be applied to types 'number' and 'void'. var r3a1 = a <= e; // no error, expected var r3b1 = b <= a; ~~~~~~ !!! Operator '<=' cannot be applied to types 'boolean' and 'number'. var r3b1 = b <= c; ~~~~~~ !!! Operator '<=' cannot be applied to types 'boolean' and 'string'. var r3b1 = b <= d; ~~~~~~ !!! Operator '<=' cannot be applied to types 'boolean' and 'void'. var r3b1 = b <= e; ~~~~~~ !!! Operator '<=' cannot be applied to types 'boolean' and 'E'. var r3c1 = c <= a; ~~~~~~ !!! Operator '<=' cannot be applied to types 'string' and 'number'. var r3c1 = c <= b; ~~~~~~ !!! Operator '<=' cannot be applied to types 'string' and 'boolean'. var r3c1 = c <= d; ~~~~~~ !!! Operator '<=' cannot be applied to types 'string' and 'void'. var r3c1 = c <= e; ~~~~~~ !!! Operator '<=' cannot be applied to types 'string' and 'E'. var r3d1 = d <= a; ~~~~~~ !!! Operator '<=' cannot be applied to types 'void' and 'number'. var r3d1 = d <= b; ~~~~~~ !!! Operator '<=' cannot be applied to types 'void' and 'boolean'. var r3d1 = d <= c; ~~~~~~ !!! Operator '<=' cannot be applied to types 'void' and 'string'. var r3d1 = d <= e; ~~~~~~ !!! Operator '<=' cannot be applied to types 'void' and 'E'. var r3e1 = e <= a; // no error, expected var r3e1 = e <= b; ~~~~~~ !!! Operator '<=' cannot be applied to types 'E' and 'boolean'. var r3e1 = e <= c; ~~~~~~ !!! Operator '<=' cannot be applied to types 'E' and 'string'. var r3e1 = e <= d; ~~~~~~ !!! Operator '<=' cannot be applied to types 'E' and 'void'. // operator >= var r4a1 = a >= b; ~~~~~~ !!! Operator '>=' cannot be applied to types 'number' and 'boolean'. var r4a1 = a >= c; ~~~~~~ !!! Operator '>=' cannot be applied to types 'number' and 'string'. var r4a1 = a >= d; ~~~~~~ !!! Operator '>=' cannot be applied to types 'number' and 'void'. var r4a1 = a >= e; // no error, expected var r4b1 = b >= a; ~~~~~~ !!! Operator '>=' cannot be applied to types 'boolean' and 'number'. var r4b1 = b >= c; ~~~~~~ !!! Operator '>=' cannot be applied to types 'boolean' and 'string'. var r4b1 = b >= d; ~~~~~~ !!! Operator '>=' cannot be applied to types 'boolean' and 'void'. var r4b1 = b >= e; ~~~~~~ !!! Operator '>=' cannot be applied to types 'boolean' and 'E'. var r4c1 = c >= a; ~~~~~~ !!! Operator '>=' cannot be applied to types 'string' and 'number'. var r4c1 = c >= b; ~~~~~~ !!! Operator '>=' cannot be applied to types 'string' and 'boolean'. var r4c1 = c >= d; ~~~~~~ !!! Operator '>=' cannot be applied to types 'string' and 'void'. var r4c1 = c >= e; ~~~~~~ !!! Operator '>=' cannot be applied to types 'string' and 'E'. var r4d1 = d >= a; ~~~~~~ !!! Operator '>=' cannot be applied to types 'void' and 'number'. var r4d1 = d >= b; ~~~~~~ !!! Operator '>=' cannot be applied to types 'void' and 'boolean'. var r4d1 = d >= c; ~~~~~~ !!! Operator '>=' cannot be applied to types 'void' and 'string'. var r4d1 = d >= e; ~~~~~~ !!! Operator '>=' cannot be applied to types 'void' and 'E'. var r4e1 = e >= a; // no error, expected var r4e1 = e >= b; ~~~~~~ !!! Operator '>=' cannot be applied to types 'E' and 'boolean'. var r4e1 = e >= c; ~~~~~~ !!! Operator '>=' cannot be applied to types 'E' and 'string'. var r4e1 = e >= d; ~~~~~~ !!! Operator '>=' cannot be applied to types 'E' and 'void'. // operator == var r5a1 = a == b; ~~~~~~ !!! Operator '==' cannot be applied to types 'number' and 'boolean'. var r5a1 = a == c; ~~~~~~ !!! Operator '==' cannot be applied to types 'number' and 'string'. var r5a1 = a == d; ~~~~~~ !!! Operator '==' cannot be applied to types 'number' and 'void'. var r5a1 = a == e; // no error, expected var r5b1 = b == a; ~~~~~~ !!! Operator '==' cannot be applied to types 'boolean' and 'number'. var r5b1 = b == c; ~~~~~~ !!! Operator '==' cannot be applied to types 'boolean' and 'string'. var r5b1 = b == d; ~~~~~~ !!! Operator '==' cannot be applied to types 'boolean' and 'void'. var r5b1 = b == e; ~~~~~~ !!! Operator '==' cannot be applied to types 'boolean' and 'E'. var r5c1 = c == a; ~~~~~~ !!! Operator '==' cannot be applied to types 'string' and 'number'. var r5c1 = c == b; ~~~~~~ !!! Operator '==' cannot be applied to types 'string' and 'boolean'. var r5c1 = c == d; ~~~~~~ !!! Operator '==' cannot be applied to types 'string' and 'void'. var r5c1 = c == e; ~~~~~~ !!! Operator '==' cannot be applied to types 'string' and 'E'. var r5d1 = d == a; ~~~~~~ !!! Operator '==' cannot be applied to types 'void' and 'number'. var r5d1 = d == b; ~~~~~~ !!! Operator '==' cannot be applied to types 'void' and 'boolean'. var r5d1 = d == c; ~~~~~~ !!! Operator '==' cannot be applied to types 'void' and 'string'. var r5d1 = d == e; ~~~~~~ !!! Operator '==' cannot be applied to types 'void' and 'E'. var r5e1 = e == a; // no error, expected var r5e1 = e == b; ~~~~~~ !!! Operator '==' cannot be applied to types 'E' and 'boolean'. var r5e1 = e == c; ~~~~~~ !!! Operator '==' cannot be applied to types 'E' and 'string'. var r5e1 = e == d; ~~~~~~ !!! Operator '==' cannot be applied to types 'E' and 'void'. // operator != var r6a1 = a != b; ~~~~~~ !!! Operator '!=' cannot be applied to types 'number' and 'boolean'. var r6a1 = a != c; ~~~~~~ !!! Operator '!=' cannot be applied to types 'number' and 'string'. var r6a1 = a != d; ~~~~~~ !!! Operator '!=' cannot be applied to types 'number' and 'void'. var r6a1 = a != e; // no error, expected var r6b1 = b != a; ~~~~~~ !!! Operator '!=' cannot be applied to types 'boolean' and 'number'. var r6b1 = b != c; ~~~~~~ !!! Operator '!=' cannot be applied to types 'boolean' and 'string'. var r6b1 = b != d; ~~~~~~ !!! Operator '!=' cannot be applied to types 'boolean' and 'void'. var r6b1 = b != e; ~~~~~~ !!! Operator '!=' cannot be applied to types 'boolean' and 'E'. var r6c1 = c != a; ~~~~~~ !!! Operator '!=' cannot be applied to types 'string' and 'number'. var r6c1 = c != b; ~~~~~~ !!! Operator '!=' cannot be applied to types 'string' and 'boolean'. var r6c1 = c != d; ~~~~~~ !!! Operator '!=' cannot be applied to types 'string' and 'void'. var r6c1 = c != e; ~~~~~~ !!! Operator '!=' cannot be applied to types 'string' and 'E'. var r6d1 = d != a; ~~~~~~ !!! Operator '!=' cannot be applied to types 'void' and 'number'. var r6d1 = d != b; ~~~~~~ !!! Operator '!=' cannot be applied to types 'void' and 'boolean'. var r6d1 = d != c; ~~~~~~ !!! Operator '!=' cannot be applied to types 'void' and 'string'. var r6d1 = d != e; ~~~~~~ !!! Operator '!=' cannot be applied to types 'void' and 'E'. var r6e1 = e != a; // no error, expected var r6e1 = e != b; ~~~~~~ !!! Operator '!=' cannot be applied to types 'E' and 'boolean'. var r6e1 = e != c; ~~~~~~ !!! Operator '!=' cannot be applied to types 'E' and 'string'. var r6e1 = e != d; ~~~~~~ !!! Operator '!=' cannot be applied to types 'E' and 'void'. // operator === var r7a1 = a === b; ~~~~~~~ !!! Operator '===' cannot be applied to types 'number' and 'boolean'. var r7a1 = a === c; ~~~~~~~ !!! Operator '===' cannot be applied to types 'number' and 'string'. var r7a1 = a === d; ~~~~~~~ !!! Operator '===' cannot be applied to types 'number' and 'void'. var r7a1 = a === e; // no error, expected var r7b1 = b === a; ~~~~~~~ !!! Operator '===' cannot be applied to types 'boolean' and 'number'. var r7b1 = b === c; ~~~~~~~ !!! Operator '===' cannot be applied to types 'boolean' and 'string'. var r7b1 = b === d; ~~~~~~~ !!! Operator '===' cannot be applied to types 'boolean' and 'void'. var r7b1 = b === e; ~~~~~~~ !!! Operator '===' cannot be applied to types 'boolean' and 'E'. var r7c1 = c === a; ~~~~~~~ !!! Operator '===' cannot be applied to types 'string' and 'number'. var r7c1 = c === b; ~~~~~~~ !!! Operator '===' cannot be applied to types 'string' and 'boolean'. var r7c1 = c === d; ~~~~~~~ !!! Operator '===' cannot be applied to types 'string' and 'void'. var r7c1 = c === e; ~~~~~~~ !!! Operator '===' cannot be applied to types 'string' and 'E'. var r7d1 = d === a; ~~~~~~~ !!! Operator '===' cannot be applied to types 'void' and 'number'. var r7d1 = d === b; ~~~~~~~ !!! Operator '===' cannot be applied to types 'void' and 'boolean'. var r7d1 = d === c; ~~~~~~~ !!! Operator '===' cannot be applied to types 'void' and 'string'. var r7d1 = d === e; ~~~~~~~ !!! Operator '===' cannot be applied to types 'void' and 'E'. var r7e1 = e === a; // no error, expected var r7e1 = e === b; ~~~~~~~ !!! Operator '===' cannot be applied to types 'E' and 'boolean'. var r7e1 = e === c; ~~~~~~~ !!! Operator '===' cannot be applied to types 'E' and 'string'. var r7e1 = e === d; ~~~~~~~ !!! Operator '===' cannot be applied to types 'E' and 'void'. // operator !== var r8a1 = a !== b; ~~~~~~~ !!! Operator '!==' cannot be applied to types 'number' and 'boolean'. var r8a1 = a !== c; ~~~~~~~ !!! Operator '!==' cannot be applied to types 'number' and 'string'. var r8a1 = a !== d; ~~~~~~~ !!! Operator '!==' cannot be applied to types 'number' and 'void'. var r8a1 = a !== e; // no error, expected var r8b1 = b !== a; ~~~~~~~ !!! Operator '!==' cannot be applied to types 'boolean' and 'number'. var r8b1 = b !== c; ~~~~~~~ !!! Operator '!==' cannot be applied to types 'boolean' and 'string'. var r8b1 = b !== d; ~~~~~~~ !!! Operator '!==' cannot be applied to types 'boolean' and 'void'. var r8b1 = b !== e; ~~~~~~~ !!! Operator '!==' cannot be applied to types 'boolean' and 'E'. var r8c1 = c !== a; ~~~~~~~ !!! Operator '!==' cannot be applied to types 'string' and 'number'. var r8c1 = c !== b; ~~~~~~~ !!! Operator '!==' cannot be applied to types 'string' and 'boolean'. var r8c1 = c !== d; ~~~~~~~ !!! Operator '!==' cannot be applied to types 'string' and 'void'. var r8c1 = c !== e; ~~~~~~~ !!! Operator '!==' cannot be applied to types 'string' and 'E'. var r8d1 = d !== a; ~~~~~~~ !!! Operator '!==' cannot be applied to types 'void' and 'number'. var r8d1 = d !== b; ~~~~~~~ !!! Operator '!==' cannot be applied to types 'void' and 'boolean'. var r8d1 = d !== c; ~~~~~~~ !!! Operator '!==' cannot be applied to types 'void' and 'string'. var r8d1 = d !== e; ~~~~~~~ !!! Operator '!==' cannot be applied to types 'void' and 'E'. var r8e1 = e !== a; // no error, expected var r8e1 = e !== b; ~~~~~~~ !!! Operator '!==' cannot be applied to types 'E' and 'boolean'. var r8e1 = e !== c; ~~~~~~~ !!! Operator '!==' cannot be applied to types 'E' and 'string'. var r8e1 = e !== d; ~~~~~~~ !!! Operator '!==' cannot be applied to types 'E' and 'void'.