1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153
|
=== tests/cases/compiler/intersectionWithConflictingPrivates.ts ===
class A { private x: unknown; y?: string; }
>A : A
>x : unknown
>y : string | undefined
class B { private x: unknown; y?: string; }
>B : B
>x : unknown
>y : string | undefined
declare let ab: A & B;
>ab : never
ab.y = 'hello';
>ab.y = 'hello' : "hello"
>ab.y : any
>ab : never
>y : any
>'hello' : "hello"
ab = {};
>ab = {} : {}
>ab : never
>{} : {}
function f1(node: A | B) {
>f1 : (node: A | B) => void
>node : A | B
if (node instanceof A || node instanceof A) {
>node instanceof A || node instanceof A : boolean
>node instanceof A : boolean
>node : A | B
>A : typeof A
>node instanceof A : boolean
>node : B
>A : typeof A
node; // A
>node : A
}
else {
node; // B
>node : B
}
node; // A | B
>node : A | B
}
// Repro from #37659
abstract class ViewNode { }
>ViewNode : ViewNode
abstract class ViewRefNode extends ViewNode { }
>ViewRefNode : ViewRefNode
>ViewNode : ViewNode
abstract class ViewRefFileNode extends ViewRefNode { }
>ViewRefFileNode : ViewRefFileNode
>ViewRefNode : ViewRefNode
class CommitFileNode extends ViewRefFileNode {
>CommitFileNode : CommitFileNode
>ViewRefFileNode : ViewRefFileNode
private _id: any;
>_id : any
}
class ResultsFileNode extends ViewRefFileNode {
>ResultsFileNode : ResultsFileNode
>ViewRefFileNode : ViewRefFileNode
private _id: any;
>_id : any
}
class StashFileNode extends CommitFileNode {
>StashFileNode : StashFileNode
>CommitFileNode : CommitFileNode
private _id2: any;
>_id2 : any
}
class StatusFileNode extends ViewNode {
>StatusFileNode : StatusFileNode
>ViewNode : ViewNode
private _id: any;
>_id : any
}
class Foo {
>Foo : Foo
private async foo(node: CommitFileNode | ResultsFileNode | StashFileNode) {
>foo : (node: CommitFileNode | ResultsFileNode | StashFileNode) => Promise<void>
>node : CommitFileNode | ResultsFileNode | StashFileNode
if (
!(node instanceof CommitFileNode) &&
>!(node instanceof CommitFileNode) && !(node instanceof StashFileNode) && !(node instanceof ResultsFileNode) : boolean
>!(node instanceof CommitFileNode) && !(node instanceof StashFileNode) : boolean
>!(node instanceof CommitFileNode) : boolean
>(node instanceof CommitFileNode) : boolean
>node instanceof CommitFileNode : boolean
>node : CommitFileNode | ResultsFileNode | StashFileNode
>CommitFileNode : typeof CommitFileNode
!(node instanceof StashFileNode) &&
>!(node instanceof StashFileNode) : boolean
>(node instanceof StashFileNode) : boolean
>node instanceof StashFileNode : boolean
>node : ResultsFileNode
>StashFileNode : typeof StashFileNode
!(node instanceof ResultsFileNode)
>!(node instanceof ResultsFileNode) : boolean
>(node instanceof ResultsFileNode) : boolean
>node instanceof ResultsFileNode : boolean
>node : ResultsFileNode
>ResultsFileNode : typeof ResultsFileNode
) {
return;
}
await this.bar(node);
>await this.bar(node) : undefined
>this.bar(node) : Promise<undefined>
>this.bar : (node: CommitFileNode | ResultsFileNode | StashFileNode | StatusFileNode, options?: {} | undefined) => Promise<undefined>
>this : this
>bar : (node: CommitFileNode | ResultsFileNode | StashFileNode | StatusFileNode, options?: {} | undefined) => Promise<undefined>
>node : CommitFileNode | ResultsFileNode
}
private async bar(node: CommitFileNode | ResultsFileNode | StashFileNode | StatusFileNode, options?: {}) {
>bar : (node: CommitFileNode | ResultsFileNode | StashFileNode | StatusFileNode, options?: {}) => Promise<undefined>
>node : CommitFileNode | ResultsFileNode | StashFileNode | StatusFileNode
>options : {} | undefined
return Promise.resolve(undefined);
>Promise.resolve(undefined) : Promise<undefined>
>Promise.resolve : { (): Promise<void>; <T>(value: T): Promise<Awaited<T>>; <T>(value: T | PromiseLike<T>): Promise<Awaited<T>>; }
>Promise : PromiseConstructor
>resolve : { (): Promise<void>; <T>(value: T): Promise<Awaited<T>>; <T>(value: T | PromiseLike<T>): Promise<Awaited<T>>; }
>undefined : undefined
}
}
|