=== tests/cases/conformance/types/intersection/intersectionTypeEquivalence.ts === interface A { a: string } >A : Symbol(A, Decl(intersectionTypeEquivalence.ts, 0, 0)) >a : Symbol(a, Decl(intersectionTypeEquivalence.ts, 0, 13)) interface B { b: string } >B : Symbol(B, Decl(intersectionTypeEquivalence.ts, 0, 25)) >b : Symbol(b, Decl(intersectionTypeEquivalence.ts, 1, 13)) interface C { c: string } >C : Symbol(C, Decl(intersectionTypeEquivalence.ts, 1, 25)) >c : Symbol(c, Decl(intersectionTypeEquivalence.ts, 2, 13)) // A & B is equivalent to B & A. var y: A & B; >y : Symbol(y, Decl(intersectionTypeEquivalence.ts, 5, 3), Decl(intersectionTypeEquivalence.ts, 6, 3)) >A : Symbol(A, Decl(intersectionTypeEquivalence.ts, 0, 0)) >B : Symbol(B, Decl(intersectionTypeEquivalence.ts, 0, 25)) var y : B & A; >y : Symbol(y, Decl(intersectionTypeEquivalence.ts, 5, 3), Decl(intersectionTypeEquivalence.ts, 6, 3)) >B : Symbol(B, Decl(intersectionTypeEquivalence.ts, 0, 25)) >A : Symbol(A, Decl(intersectionTypeEquivalence.ts, 0, 0)) // AB & C is equivalent to A & BC, where AB is A & B and BC is B & C. var z : A & B & C; >z : Symbol(z, Decl(intersectionTypeEquivalence.ts, 9, 3), Decl(intersectionTypeEquivalence.ts, 10, 3), Decl(intersectionTypeEquivalence.ts, 11, 3)) >A : Symbol(A, Decl(intersectionTypeEquivalence.ts, 0, 0)) >B : Symbol(B, Decl(intersectionTypeEquivalence.ts, 0, 25)) >C : Symbol(C, Decl(intersectionTypeEquivalence.ts, 1, 25)) var z : (A & B) & C; >z : Symbol(z, Decl(intersectionTypeEquivalence.ts, 9, 3), Decl(intersectionTypeEquivalence.ts, 10, 3), Decl(intersectionTypeEquivalence.ts, 11, 3)) >A : Symbol(A, Decl(intersectionTypeEquivalence.ts, 0, 0)) >B : Symbol(B, Decl(intersectionTypeEquivalence.ts, 0, 25)) >C : Symbol(C, Decl(intersectionTypeEquivalence.ts, 1, 25)) var z : A & (B & C); >z : Symbol(z, Decl(intersectionTypeEquivalence.ts, 9, 3), Decl(intersectionTypeEquivalence.ts, 10, 3), Decl(intersectionTypeEquivalence.ts, 11, 3)) >A : Symbol(A, Decl(intersectionTypeEquivalence.ts, 0, 0)) >B : Symbol(B, Decl(intersectionTypeEquivalence.ts, 0, 25)) >C : Symbol(C, Decl(intersectionTypeEquivalence.ts, 1, 25)) var ab : A & B; >ab : Symbol(ab, Decl(intersectionTypeEquivalence.ts, 12, 3)) >A : Symbol(A, Decl(intersectionTypeEquivalence.ts, 0, 0)) >B : Symbol(B, Decl(intersectionTypeEquivalence.ts, 0, 25)) var bc : B & C; >bc : Symbol(bc, Decl(intersectionTypeEquivalence.ts, 13, 3)) >B : Symbol(B, Decl(intersectionTypeEquivalence.ts, 0, 25)) >C : Symbol(C, Decl(intersectionTypeEquivalence.ts, 1, 25)) var z1: typeof ab & C; >z1 : Symbol(z1, Decl(intersectionTypeEquivalence.ts, 14, 3), Decl(intersectionTypeEquivalence.ts, 15, 3)) >ab : Symbol(ab, Decl(intersectionTypeEquivalence.ts, 12, 3)) >C : Symbol(C, Decl(intersectionTypeEquivalence.ts, 1, 25)) var z1: A & typeof bc; >z1 : Symbol(z1, Decl(intersectionTypeEquivalence.ts, 14, 3), Decl(intersectionTypeEquivalence.ts, 15, 3)) >A : Symbol(A, Decl(intersectionTypeEquivalence.ts, 0, 0)) >bc : Symbol(bc, Decl(intersectionTypeEquivalence.ts, 13, 3))