tests/cases/conformance/types/nonPrimitive/nonPrimitiveStrictNull.ts(6,1): error TS2454: Variable 'a' is used before being assigned.
tests/cases/conformance/types/nonPrimitive/nonPrimitiveStrictNull.ts(7,1): error TS2322: Type 'undefined' is not assignable to type 'object'.
tests/cases/conformance/types/nonPrimitive/nonPrimitiveStrictNull.ts(8,1): error TS2322: Type 'null' is not assignable to type 'object'.
tests/cases/conformance/types/nonPrimitive/nonPrimitiveStrictNull.ts(9,1): error TS2322: Type 'object | null' is not assignable to type 'object'.
  Type 'null' is not assignable to type 'object'.
tests/cases/conformance/types/nonPrimitive/nonPrimitiveStrictNull.ts(10,1): error TS2322: Type 'object | undefined' is not assignable to type 'object'.
  Type 'undefined' is not assignable to type 'object'.
tests/cases/conformance/types/nonPrimitive/nonPrimitiveStrictNull.ts(11,1): error TS2322: Type 'object | null | undefined' is not assignable to type 'object'.
  Type 'undefined' is not assignable to type 'object'.
tests/cases/conformance/types/nonPrimitive/nonPrimitiveStrictNull.ts(17,7): error TS2339: Property 'toString' does not exist on type 'never'.
tests/cases/conformance/types/nonPrimitive/nonPrimitiveStrictNull.ts(21,5): error TS2322: Type 'object | null' is not assignable to type 'object'.
  Type 'null' is not assignable to type 'object'.
tests/cases/conformance/types/nonPrimitive/nonPrimitiveStrictNull.ts(26,5): error TS2531: Object is possibly 'null'.
tests/cases/conformance/types/nonPrimitive/nonPrimitiveStrictNull.ts(28,5): error TS2532: Object is possibly 'undefined'.
tests/cases/conformance/types/nonPrimitive/nonPrimitiveStrictNull.ts(32,5): error TS2533: Object is possibly 'null' or 'undefined'.
tests/cases/conformance/types/nonPrimitive/nonPrimitiveStrictNull.ts(38,5): error TS2531: Object is possibly 'null'.
tests/cases/conformance/types/nonPrimitive/nonPrimitiveStrictNull.ts(40,5): error TS2532: Object is possibly 'undefined'.
tests/cases/conformance/types/nonPrimitive/nonPrimitiveStrictNull.ts(44,5): error TS2532: Object is possibly 'undefined'.
tests/cases/conformance/types/nonPrimitive/nonPrimitiveStrictNull.ts(46,5): error TS2531: Object is possibly 'null'.
tests/cases/conformance/types/nonPrimitive/nonPrimitiveStrictNull.ts(51,14): error TS2344: Type 'number' does not satisfy the constraint 'object'.
tests/cases/conformance/types/nonPrimitive/nonPrimitiveStrictNull.ts(52,14): error TS2344: Type 'null' does not satisfy the constraint 'object'.
tests/cases/conformance/types/nonPrimitive/nonPrimitiveStrictNull.ts(53,14): error TS2344: Type 'undefined' does not satisfy the constraint 'object'.


==== tests/cases/conformance/types/nonPrimitive/nonPrimitiveStrictNull.ts (18 errors) ====
    var a: object
    declare var b: object | null
    declare var c: object | undefined
    declare var d: object | null | undefined
    var e: object | null
    a.toString; // error
    ~
!!! error TS2454: Variable 'a' is used before being assigned.
    a = undefined; // error
    ~
!!! error TS2322: Type 'undefined' is not assignable to type 'object'.
    a = null; // error
    ~
!!! error TS2322: Type 'null' is not assignable to type 'object'.
    a = b; // error
    ~
!!! error TS2322: Type 'object | null' is not assignable to type 'object'.
!!! error TS2322:   Type 'null' is not assignable to type 'object'.
    a = c; // error
    ~
!!! error TS2322: Type 'object | undefined' is not assignable to type 'object'.
!!! error TS2322:   Type 'undefined' is not assignable to type 'object'.
    a = d; // error
    ~
!!! error TS2322: Type 'object | null | undefined' is not assignable to type 'object'.
!!! error TS2322:   Type 'undefined' is not assignable to type 'object'.
    
    e = a; // ok
    a = e; // ok
    
    if (typeof b !== 'object') {
        b.toString(); // error, never
          ~~~~~~~~
!!! error TS2339: Property 'toString' does not exist on type 'never'.
    }
    
    if (typeof b === 'object') {
        a = b; // error, b is not narrowed
        ~
!!! error TS2322: Type 'object | null' is not assignable to type 'object'.
!!! error TS2322:   Type 'null' is not assignable to type 'object'.
    }
    
    if (typeof d === 'object') {
        b = d; // ok
        d.toString(); // error, object | null
        ~
!!! error TS2531: Object is possibly 'null'.
    } else {
        d.toString(); // error, undefined
        ~
!!! error TS2532: Object is possibly 'undefined'.
    }
    
    if (d == null) {
        d.toString(); // error, undefined | null
        ~
!!! error TS2533: Object is possibly 'null' or 'undefined'.
    } else {
        d.toString(); // object
    }
    
    if (d === null) {
        d.toString(); // error, null
        ~
!!! error TS2531: Object is possibly 'null'.
    } else {
        d.toString(); // error, object | undefined
        ~
!!! error TS2532: Object is possibly 'undefined'.
    }
    
    if (typeof d === 'undefined') {
        d.toString(); // error, undefined
        ~
!!! error TS2532: Object is possibly 'undefined'.
    } else {
        d.toString(); // error, object | null
        ~
!!! error TS2531: Object is possibly 'null'.
    }
    
    interface Proxy<T extends object> {}
    
    var x: Proxy<number>; // error
                 ~~~~~~
!!! error TS2344: Type 'number' does not satisfy the constraint 'object'.
    var y: Proxy<null>; // error
                 ~~~~
!!! error TS2344: Type 'null' does not satisfy the constraint 'object'.
    var z: Proxy<undefined>; // error
                 ~~~~~~~~~
!!! error TS2344: Type 'undefined' does not satisfy the constraint 'object'.
    
    interface Blah {
      foo: number;
    }
    
    var u: Proxy<Blah>; // ok
    