tests/cases/conformance/expressions/binaryOperators/inOperator/inOperatorWithInvalidOperands.ts(15,11): error TS2360: The left-hand side of an 'in' expression must be a private identifier or of type 'any', 'string', 'number', or 'symbol'.
tests/cases/conformance/expressions/binaryOperators/inOperator/inOperatorWithInvalidOperands.ts(16,11): error TS2360: The left-hand side of an 'in' expression must be a private identifier or of type 'any', 'string', 'number', or 'symbol'.
tests/cases/conformance/expressions/binaryOperators/inOperator/inOperatorWithInvalidOperands.ts(17,11): error TS2360: The left-hand side of an 'in' expression must be a private identifier or of type 'any', 'string', 'number', or 'symbol'.
tests/cases/conformance/expressions/binaryOperators/inOperator/inOperatorWithInvalidOperands.ts(19,11): error TS2531: Object is possibly 'null'.
tests/cases/conformance/expressions/binaryOperators/inOperator/inOperatorWithInvalidOperands.ts(20,11): error TS2532: Object is possibly 'undefined'.
tests/cases/conformance/expressions/binaryOperators/inOperator/inOperatorWithInvalidOperands.ts(22,11): error TS2360: The left-hand side of an 'in' expression must be a private identifier or of type 'any', 'string', 'number', or 'symbol'.
tests/cases/conformance/expressions/binaryOperators/inOperator/inOperatorWithInvalidOperands.ts(23,11): error TS2360: The left-hand side of an 'in' expression must be a private identifier or of type 'any', 'string', 'number', or 'symbol'.
tests/cases/conformance/expressions/binaryOperators/inOperator/inOperatorWithInvalidOperands.ts(24,12): error TS2360: The left-hand side of an 'in' expression must be a private identifier or of type 'any', 'string', 'number', or 'symbol'.
tests/cases/conformance/expressions/binaryOperators/inOperator/inOperatorWithInvalidOperands.ts(25,12): error TS2360: The left-hand side of an 'in' expression must be a private identifier or of type 'any', 'string', 'number', or 'symbol'.
tests/cases/conformance/expressions/binaryOperators/inOperator/inOperatorWithInvalidOperands.ts(35,16): error TS2361: The right-hand side of an 'in' expression must not be a primitive.
tests/cases/conformance/expressions/binaryOperators/inOperator/inOperatorWithInvalidOperands.ts(36,16): error TS2361: The right-hand side of an 'in' expression must not be a primitive.
tests/cases/conformance/expressions/binaryOperators/inOperator/inOperatorWithInvalidOperands.ts(37,16): error TS2361: The right-hand side of an 'in' expression must not be a primitive.
tests/cases/conformance/expressions/binaryOperators/inOperator/inOperatorWithInvalidOperands.ts(38,16): error TS2361: The right-hand side of an 'in' expression must not be a primitive.
tests/cases/conformance/expressions/binaryOperators/inOperator/inOperatorWithInvalidOperands.ts(39,16): error TS2361: The right-hand side of an 'in' expression must not be a primitive.
tests/cases/conformance/expressions/binaryOperators/inOperator/inOperatorWithInvalidOperands.ts(40,16): error TS2361: The right-hand side of an 'in' expression must not be a primitive.
tests/cases/conformance/expressions/binaryOperators/inOperator/inOperatorWithInvalidOperands.ts(41,16): error TS2361: The right-hand side of an 'in' expression must not be a primitive.
tests/cases/conformance/expressions/binaryOperators/inOperator/inOperatorWithInvalidOperands.ts(42,16): error TS2361: The right-hand side of an 'in' expression must not be a primitive.
tests/cases/conformance/expressions/binaryOperators/inOperator/inOperatorWithInvalidOperands.ts(43,16): error TS2531: Object is possibly 'null'.
tests/cases/conformance/expressions/binaryOperators/inOperator/inOperatorWithInvalidOperands.ts(44,17): error TS2532: Object is possibly 'undefined'.
tests/cases/conformance/expressions/binaryOperators/inOperator/inOperatorWithInvalidOperands.ts(47,11): error TS2360: The left-hand side of an 'in' expression must be a private identifier or of type 'any', 'string', 'number', or 'symbol'.
tests/cases/conformance/expressions/binaryOperators/inOperator/inOperatorWithInvalidOperands.ts(47,17): error TS2361: The right-hand side of an 'in' expression must not be a primitive.


==== tests/cases/conformance/expressions/binaryOperators/inOperator/inOperatorWithInvalidOperands.ts (21 errors) ====
    class Foo {}
    enum E { a }
    
    var x: any;
    
    // invalid left operands
    // the left operand is required to be of type Any, the String primitive type, or the Number primitive type
    var a1: boolean;
    var a2: void;
    var a3: {};
    var a4: E;
    var a5: Foo | string;
    var a6: Foo;
    
    var ra1 = a1 in x;
              ~~
!!! error TS2360: The left-hand side of an 'in' expression must be a private identifier or of type 'any', 'string', 'number', or 'symbol'.
    var ra2 = a2 in x;
              ~~
!!! error TS2360: The left-hand side of an 'in' expression must be a private identifier or of type 'any', 'string', 'number', or 'symbol'.
    var ra3 = a3 in x;
              ~~
!!! error TS2360: The left-hand side of an 'in' expression must be a private identifier or of type 'any', 'string', 'number', or 'symbol'.
    var ra4 = a4 in x;
    var ra5 = null in x;
              ~~~~
!!! error TS2531: Object is possibly 'null'.
    var ra6 = undefined in x;
              ~~~~~~~~~
!!! error TS2532: Object is possibly 'undefined'.
    var ra7 = E.a in x;
    var ra8 = false in x;
              ~~~~~
!!! error TS2360: The left-hand side of an 'in' expression must be a private identifier or of type 'any', 'string', 'number', or 'symbol'.
    var ra9 = {} in x;
              ~~
!!! error TS2360: The left-hand side of an 'in' expression must be a private identifier or of type 'any', 'string', 'number', or 'symbol'.
    var ra10 = a5 in x;
               ~~
!!! error TS2360: The left-hand side of an 'in' expression must be a private identifier or of type 'any', 'string', 'number', or 'symbol'.
    var ra11 = a6 in x;
               ~~
!!! error TS2360: The left-hand side of an 'in' expression must be a private identifier or of type 'any', 'string', 'number', or 'symbol'.
    
    // invalid right operands
    // the right operand is required to be of type Any, an object type, or a type parameter type
    var b1: number;
    var b2: boolean;
    var b3: string;
    var b4: void;
    var b5: string | number;
    
    var rb1 = x in b1;
                   ~~
!!! error TS2361: The right-hand side of an 'in' expression must not be a primitive.
    var rb2 = x in b2;
                   ~~
!!! error TS2361: The right-hand side of an 'in' expression must not be a primitive.
    var rb3 = x in b3;
                   ~~
!!! error TS2361: The right-hand side of an 'in' expression must not be a primitive.
    var rb4 = x in b4;
                   ~~
!!! error TS2361: The right-hand side of an 'in' expression must not be a primitive.
    var rb5 = x in b5;
                   ~~
!!! error TS2361: The right-hand side of an 'in' expression must not be a primitive.
    var rb6 = x in 0;
                   ~
!!! error TS2361: The right-hand side of an 'in' expression must not be a primitive.
    var rb7 = x in false;
                   ~~~~~
!!! error TS2361: The right-hand side of an 'in' expression must not be a primitive.
    var rb8 = x in '';
                   ~~
!!! error TS2361: The right-hand side of an 'in' expression must not be a primitive.
    var rb9 = x in null;
                   ~~~~
!!! error TS2531: Object is possibly 'null'.
    var rb10 = x in undefined;
                    ~~~~~~~~~
!!! error TS2532: Object is possibly 'undefined'.
    
    // both operands are invalid
    var rc1 = {} in '';
              ~~
!!! error TS2360: The left-hand side of an 'in' expression must be a private identifier or of type 'any', 'string', 'number', or 'symbol'.
                    ~~
!!! error TS2361: The right-hand side of an 'in' expression must not be a primitive.