=== tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithIdenticalObjects.ts === class A1 { >A1 : A1 public a: string; >a : string public b: number; >b : number public c: boolean; >c : boolean public d: any; >d : any public e: Object; >e : Object >Object : Object public fn(a: string): string { >fn : (a: string) => string >a : string return null; >null : null } } class B1 { >B1 : B1 public a: string; >a : string public b: number; >b : number public c: boolean; >c : boolean public d: any; >d : any public e: Object; >e : Object >Object : Object public fn(b: string): string { >fn : (b: string) => string >b : string return null; >null : null } } class Base { >Base : Base private a: string; >a : string private fn(b: string): string { >fn : (b: string) => string >b : string return null; >null : null } } class A2 extends Base { } >A2 : A2 >Base : Base class B2 extends Base { } >B2 : B2 >Base : Base interface A3 { f(a: number): string; } >A3 : A3 >f : (a: number) => string >a : number interface B3 { f(a: number): string; } >B3 : B3 >f : (a: number) => string >a : number interface A4 { new (a: string): A1; } >A4 : A4 >a : string >A1 : A1 interface B4 { new (a: string): B1; } >B4 : B4 >a : string >B1 : B1 interface A5 { [x: number]: number; } >A5 : A5 >x : number interface B5 { [x: number]: number; } >B5 : B5 >x : number interface A6 { [x: string]: string; } >A6 : A6 >x : string interface B6 { [x: string]: string; } >B6 : B6 >x : string var a1: A1; >a1 : A1 >A1 : A1 var a2: A2; >a2 : A2 >A2 : A2 var a3: A3; >a3 : A3 >A3 : A3 var a4: A4; >a4 : A4 >A4 : A4 var a5: A5; >a5 : A5 >A5 : A5 var a6: A6; >a6 : A6 >A6 : A6 var b1: B1; >b1 : B1 >B1 : B1 var b2: B2; >b2 : B2 >B2 : B2 var b3: B3; >b3 : B3 >B3 : B3 var b4: B4; >b4 : B4 >B4 : B4 var b5: B5; >b5 : B5 >B5 : B5 var b6: B6; >b6 : B6 >B6 : B6 var base1: Base; >base1 : Base >Base : Base var base2: Base; >base2 : Base >Base : Base // operator < var r1a1 = a1 < b1; >r1a1 : boolean >a1 < b1 : boolean >a1 : A1 >b1 : B1 var r1a2 = base1 < base2; >r1a2 : boolean >base1 < base2 : boolean >base1 : Base >base2 : Base var r1a3 = a2 < b2; >r1a3 : boolean >a2 < b2 : boolean >a2 : A2 >b2 : B2 var r1a4 = a3 < b3; >r1a4 : boolean >a3 < b3 : boolean >a3 : A3 >b3 : B3 var r1a5 = a4 < b4; >r1a5 : boolean >a4 < b4 : boolean >a4 : A4 >b4 : B4 var r1a6 = a5 < b5; >r1a6 : boolean >a5 < b5 : boolean >a5 : A5 >b5 : B5 var r1a7 = a6 < b6; >r1a7 : boolean >a6 < b6 : boolean >a6 : A6 >b6 : B6 var r1b1 = b1 < a1; >r1b1 : boolean >b1 < a1 : boolean >b1 : B1 >a1 : A1 var r1b2 = base2 < base1; >r1b2 : boolean >base2 < base1 : boolean >base2 : Base >base1 : Base var r1b3 = b2 < a2; >r1b3 : boolean >b2 < a2 : boolean >b2 : B2 >a2 : A2 var r1b4 = b3 < a3; >r1b4 : boolean >b3 < a3 : boolean >b3 : B3 >a3 : A3 var r1b5 = b4 < a4; >r1b5 : boolean >b4 < a4 : boolean >b4 : B4 >a4 : A4 var r1b6 = b5 < a5; >r1b6 : boolean >b5 < a5 : boolean >b5 : B5 >a5 : A5 var r1b7 = b6 < a6; >r1b7 : boolean >b6 < a6 : boolean >b6 : B6 >a6 : A6 // operator > var r2a1 = a1 > b1; >r2a1 : boolean >a1 > b1 : boolean >a1 : A1 >b1 : B1 var r2a2 = base1 > base2; >r2a2 : boolean >base1 > base2 : boolean >base1 : Base >base2 : Base var r2a3 = a2 > b2; >r2a3 : boolean >a2 > b2 : boolean >a2 : A2 >b2 : B2 var r2a4 = a3 > b3; >r2a4 : boolean >a3 > b3 : boolean >a3 : A3 >b3 : B3 var r2a5 = a4 > b4; >r2a5 : boolean >a4 > b4 : boolean >a4 : A4 >b4 : B4 var r2a6 = a5 > b5; >r2a6 : boolean >a5 > b5 : boolean >a5 : A5 >b5 : B5 var r2a7 = a6 > b6; >r2a7 : boolean >a6 > b6 : boolean >a6 : A6 >b6 : B6 var r2b1 = b1 > a1; >r2b1 : boolean >b1 > a1 : boolean >b1 : B1 >a1 : A1 var r2b2 = base2 > base1; >r2b2 : boolean >base2 > base1 : boolean >base2 : Base >base1 : Base var r2b3 = b2 > a2; >r2b3 : boolean >b2 > a2 : boolean >b2 : B2 >a2 : A2 var r2b4 = b3 > a3; >r2b4 : boolean >b3 > a3 : boolean >b3 : B3 >a3 : A3 var r2b5 = b4 > a4; >r2b5 : boolean >b4 > a4 : boolean >b4 : B4 >a4 : A4 var r2b6 = b5 > a5; >r2b6 : boolean >b5 > a5 : boolean >b5 : B5 >a5 : A5 var r2b7 = b6 > a6; >r2b7 : boolean >b6 > a6 : boolean >b6 : B6 >a6 : A6 // operator <= var r3a1 = a1 <= b1; >r3a1 : boolean >a1 <= b1 : boolean >a1 : A1 >b1 : B1 var r3a2 = base1 <= base2; >r3a2 : boolean >base1 <= base2 : boolean >base1 : Base >base2 : Base var r3a3 = a2 <= b2; >r3a3 : boolean >a2 <= b2 : boolean >a2 : A2 >b2 : B2 var r3a4 = a3 <= b3; >r3a4 : boolean >a3 <= b3 : boolean >a3 : A3 >b3 : B3 var r3a5 = a4 <= b4; >r3a5 : boolean >a4 <= b4 : boolean >a4 : A4 >b4 : B4 var r3a6 = a5 <= b5; >r3a6 : boolean >a5 <= b5 : boolean >a5 : A5 >b5 : B5 var r3a7 = a6 <= b6; >r3a7 : boolean >a6 <= b6 : boolean >a6 : A6 >b6 : B6 var r3b1 = b1 <= a1; >r3b1 : boolean >b1 <= a1 : boolean >b1 : B1 >a1 : A1 var r3b2 = base2 <= base1; >r3b2 : boolean >base2 <= base1 : boolean >base2 : Base >base1 : Base var r3b3 = b2 <= a2; >r3b3 : boolean >b2 <= a2 : boolean >b2 : B2 >a2 : A2 var r3b4 = b3 <= a3; >r3b4 : boolean >b3 <= a3 : boolean >b3 : B3 >a3 : A3 var r3b5 = b4 <= a4; >r3b5 : boolean >b4 <= a4 : boolean >b4 : B4 >a4 : A4 var r3b6 = b5 <= a5; >r3b6 : boolean >b5 <= a5 : boolean >b5 : B5 >a5 : A5 var r3b7 = b6 <= a6; >r3b7 : boolean >b6 <= a6 : boolean >b6 : B6 >a6 : A6 // operator >= var r4a1 = a1 >= b1; >r4a1 : boolean >a1 >= b1 : boolean >a1 : A1 >b1 : B1 var r4a2 = base1 >= base2; >r4a2 : boolean >base1 >= base2 : boolean >base1 : Base >base2 : Base var r4a3 = a2 >= b2; >r4a3 : boolean >a2 >= b2 : boolean >a2 : A2 >b2 : B2 var r4a4 = a3 >= b3; >r4a4 : boolean >a3 >= b3 : boolean >a3 : A3 >b3 : B3 var r4a5 = a4 >= b4; >r4a5 : boolean >a4 >= b4 : boolean >a4 : A4 >b4 : B4 var r4a6 = a5 >= b5; >r4a6 : boolean >a5 >= b5 : boolean >a5 : A5 >b5 : B5 var r4a7 = a6 >= b6; >r4a7 : boolean >a6 >= b6 : boolean >a6 : A6 >b6 : B6 var r4b1 = b1 >= a1; >r4b1 : boolean >b1 >= a1 : boolean >b1 : B1 >a1 : A1 var r4b2 = base2 >= base1; >r4b2 : boolean >base2 >= base1 : boolean >base2 : Base >base1 : Base var r4b3 = b2 >= a2; >r4b3 : boolean >b2 >= a2 : boolean >b2 : B2 >a2 : A2 var r4b4 = b3 >= a3; >r4b4 : boolean >b3 >= a3 : boolean >b3 : B3 >a3 : A3 var r4b5 = b4 >= a4; >r4b5 : boolean >b4 >= a4 : boolean >b4 : B4 >a4 : A4 var r4b6 = b5 >= a5; >r4b6 : boolean >b5 >= a5 : boolean >b5 : B5 >a5 : A5 var r4b7 = b6 >= a6; >r4b7 : boolean >b6 >= a6 : boolean >b6 : B6 >a6 : A6 // operator == var r5a1 = a1 == b1; >r5a1 : boolean >a1 == b1 : boolean >a1 : A1 >b1 : B1 var r5a2 = base1 == base2; >r5a2 : boolean >base1 == base2 : boolean >base1 : Base >base2 : Base var r5a3 = a2 == b2; >r5a3 : boolean >a2 == b2 : boolean >a2 : A2 >b2 : B2 var r5a4 = a3 == b3; >r5a4 : boolean >a3 == b3 : boolean >a3 : A3 >b3 : B3 var r5a5 = a4 == b4; >r5a5 : boolean >a4 == b4 : boolean >a4 : A4 >b4 : B4 var r5a6 = a5 == b5; >r5a6 : boolean >a5 == b5 : boolean >a5 : A5 >b5 : B5 var r5a7 = a6 == b6; >r5a7 : boolean >a6 == b6 : boolean >a6 : A6 >b6 : B6 var r5b1 = b1 == a1; >r5b1 : boolean >b1 == a1 : boolean >b1 : B1 >a1 : A1 var r5b2 = base2 == base1; >r5b2 : boolean >base2 == base1 : boolean >base2 : Base >base1 : Base var r5b3 = b2 == a2; >r5b3 : boolean >b2 == a2 : boolean >b2 : B2 >a2 : A2 var r5b4 = b3 == a3; >r5b4 : boolean >b3 == a3 : boolean >b3 : B3 >a3 : A3 var r5b5 = b4 == a4; >r5b5 : boolean >b4 == a4 : boolean >b4 : B4 >a4 : A4 var r5b6 = b5 == a5; >r5b6 : boolean >b5 == a5 : boolean >b5 : B5 >a5 : A5 var r5b7 = b6 == a6; >r5b7 : boolean >b6 == a6 : boolean >b6 : B6 >a6 : A6 // operator != var r6a1 = a1 != b1; >r6a1 : boolean >a1 != b1 : boolean >a1 : A1 >b1 : B1 var r6a2 = base1 != base2; >r6a2 : boolean >base1 != base2 : boolean >base1 : Base >base2 : Base var r6a3 = a2 != b2; >r6a3 : boolean >a2 != b2 : boolean >a2 : A2 >b2 : B2 var r6a4 = a3 != b3; >r6a4 : boolean >a3 != b3 : boolean >a3 : A3 >b3 : B3 var r6a5 = a4 != b4; >r6a5 : boolean >a4 != b4 : boolean >a4 : A4 >b4 : B4 var r6a6 = a5 != b5; >r6a6 : boolean >a5 != b5 : boolean >a5 : A5 >b5 : B5 var r6a7 = a6 != b6; >r6a7 : boolean >a6 != b6 : boolean >a6 : A6 >b6 : B6 var r6b1 = b1 != a1; >r6b1 : boolean >b1 != a1 : boolean >b1 : B1 >a1 : A1 var r6b2 = base2 != base1; >r6b2 : boolean >base2 != base1 : boolean >base2 : Base >base1 : Base var r6b3 = b2 != a2; >r6b3 : boolean >b2 != a2 : boolean >b2 : B2 >a2 : A2 var r6b4 = b3 != a3; >r6b4 : boolean >b3 != a3 : boolean >b3 : B3 >a3 : A3 var r6b5 = b4 != a4; >r6b5 : boolean >b4 != a4 : boolean >b4 : B4 >a4 : A4 var r6b6 = b5 != a5; >r6b6 : boolean >b5 != a5 : boolean >b5 : B5 >a5 : A5 var r6b7 = b6 != a6; >r6b7 : boolean >b6 != a6 : boolean >b6 : B6 >a6 : A6 // operator === var r7a1 = a1 === b1; >r7a1 : boolean >a1 === b1 : boolean >a1 : A1 >b1 : B1 var r7a2 = base1 === base2; >r7a2 : boolean >base1 === base2 : boolean >base1 : Base >base2 : Base var r7a3 = a2 === b2; >r7a3 : boolean >a2 === b2 : boolean >a2 : A2 >b2 : B2 var r7a4 = a3 === b3; >r7a4 : boolean >a3 === b3 : boolean >a3 : A3 >b3 : B3 var r7a5 = a4 === b4; >r7a5 : boolean >a4 === b4 : boolean >a4 : A4 >b4 : B4 var r7a6 = a5 === b5; >r7a6 : boolean >a5 === b5 : boolean >a5 : A5 >b5 : B5 var r7a7 = a6 === b6; >r7a7 : boolean >a6 === b6 : boolean >a6 : A6 >b6 : B6 var r7b1 = b1 === a1; >r7b1 : boolean >b1 === a1 : boolean >b1 : B1 >a1 : A1 var r7b2 = base2 === base1; >r7b2 : boolean >base2 === base1 : boolean >base2 : Base >base1 : Base var r7b3 = b2 === a2; >r7b3 : boolean >b2 === a2 : boolean >b2 : B2 >a2 : A2 var r7b4 = b3 === a3; >r7b4 : boolean >b3 === a3 : boolean >b3 : B3 >a3 : A3 var r7b5 = b4 === a4; >r7b5 : boolean >b4 === a4 : boolean >b4 : B4 >a4 : A4 var r7b6 = b5 === a5; >r7b6 : boolean >b5 === a5 : boolean >b5 : B5 >a5 : A5 var r7b7 = b6 === a6; >r7b7 : boolean >b6 === a6 : boolean >b6 : B6 >a6 : A6 // operator !== var r8a1 = a1 !== b1; >r8a1 : boolean >a1 !== b1 : boolean >a1 : A1 >b1 : B1 var r8a2 = base1 !== base2; >r8a2 : boolean >base1 !== base2 : boolean >base1 : Base >base2 : Base var r8a3 = a2 !== b2; >r8a3 : boolean >a2 !== b2 : boolean >a2 : A2 >b2 : B2 var r8a4 = a3 !== b3; >r8a4 : boolean >a3 !== b3 : boolean >a3 : A3 >b3 : B3 var r8a5 = a4 !== b4; >r8a5 : boolean >a4 !== b4 : boolean >a4 : A4 >b4 : B4 var r8a6 = a5 !== b5; >r8a6 : boolean >a5 !== b5 : boolean >a5 : A5 >b5 : B5 var r8a7 = a6 !== b6; >r8a7 : boolean >a6 !== b6 : boolean >a6 : A6 >b6 : B6 var r8b1 = b1 !== a1; >r8b1 : boolean >b1 !== a1 : boolean >b1 : B1 >a1 : A1 var r8b2 = base2 !== base1; >r8b2 : boolean >base2 !== base1 : boolean >base2 : Base >base1 : Base var r8b3 = b2 !== a2; >r8b3 : boolean >b2 !== a2 : boolean >b2 : B2 >a2 : A2 var r8b4 = b3 !== a3; >r8b4 : boolean >b3 !== a3 : boolean >b3 : B3 >a3 : A3 var r8b5 = b4 !== a4; >r8b5 : boolean >b4 !== a4 : boolean >b4 : B4 >a4 : A4 var r8b6 = b5 !== a5; >r8b6 : boolean >b5 !== a5 : boolean >b5 : B5 >a5 : A5 var r8b7 = b6 !== a6; >r8b7 : boolean >b6 !== a6 : boolean >b6 : B6 >a6 : A6