// Check that we only cache results of type comparisons that are free of assumptions

interface A {
    p: C;
    s: string;
}

interface B {
    p: D;
    s: number;
}

interface C {
    q: A;
}

interface D {
    q: B;
}

var a: A;
var b: B;
var c: C;
var d: D;

a = b;
c = d; // Should not be allowed
