tests/cases/compiler/fuzzy.ts(13,18): error TS2420: Class 'C' incorrectly implements interface 'I'.
  Property 'alsoWorks' is missing in type 'C'.
tests/cases/compiler/fuzzy.ts(21,20): error TS2322: Type '{ anything: number; oneI: this; }' is not assignable to type 'R'.
  Types of property 'oneI' are incompatible.
    Type 'this' is not assignable to type 'I'.
      Type 'C' is not assignable to type 'I'.
        Property 'alsoWorks' is missing in type 'C'.
tests/cases/compiler/fuzzy.ts(25,20): error TS2352: Neither type '{ oneI: this; }' nor type 'R' is assignable to the other.
  Property 'anything' is missing in type '{ oneI: this; }'.


==== tests/cases/compiler/fuzzy.ts (3 errors) ====
    module M {
        export interface I {
            works:()=>R;
            alsoWorks:()=>R;
            doesntWork:()=>R;
        }
    
        export interface R {
            anything:number;
            oneI:I;
        }
    
        export class C implements I {
                     ~
!!! error TS2420: Class 'C' incorrectly implements interface 'I'.
!!! error TS2420:   Property 'alsoWorks' is missing in type 'C'.
            constructor(public x:number) {
            }
            works():R {
                return <R>({ anything: 1 });
            }
    
            doesntWork():R {
                return { anything:1, oneI:this };
                       ~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS2322: Type '{ anything: number; oneI: this; }' is not assignable to type 'R'.
!!! error TS2322:   Types of property 'oneI' are incompatible.
!!! error TS2322:     Type 'this' is not assignable to type 'I'.
!!! error TS2322:       Type 'C' is not assignable to type 'I'.
!!! error TS2322:         Property 'alsoWorks' is missing in type 'C'.
            }
    
            worksToo():R {
                return <R>({ oneI: this });
                       ~~~~~~~~~~~~~~~~~~~
!!! error TS2352: Neither type '{ oneI: this; }' nor type 'R' is assignable to the other.
!!! error TS2352:   Property 'anything' is missing in type '{ oneI: this; }'.
            }
        }
    }
    
    