TypeScript/tests/baselines/reference/comparisonOperatorWithNoRelationshipObjectsOnCallSignature.types
Wesley Wigham 5353475fce Always collect type and symbol baselines (#18621)
* Always generate type & symbol baselines

* Accept changed shadowed baselines

* Accept brand new type and symbol baselines

* Allow `getTypeAtLocation` to return undefined in the type writer

* Accept baselines which had missing type information

* Bind container for dynamically names enum members so they may be printed

* Accept type/symbol baselines for enums with computed members

* First pass at reducing typeWriter memory overhead

* Use generators to allow for type and symbol baselines with no cache

* Accept new baselines for tests whose output was fixed by better newline splitting

* Hard cap on number of declarations printed, cache declaration print text

* handle differing newlines better still to handle RWC newlines

* Lower abridging count, accept abridged baselines

* Limit max RWC error output size, limit RWC type and symbol baseline input size

* Move skip logic into type and symbol baseliner to streamline error handling

* Accept removal of empty baselines

* Canonicalize path earlier to handle odd paths in input files

* Do canonicalization earlier still, also ensure parallel perf profiles for different targets do not trample one another

* No need to pathify again
2017-09-22 15:52:04 -07:00

789 lines
16 KiB
Plaintext

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