File: intersectionWithConflictingPrivates.types

package info (click to toggle)
node-typescript 5.0.4%2Bds1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 459,140 kB
  • sloc: javascript: 1,972,754; makefile: 6; sh: 1
file content (153 lines) | stat: -rw-r--r-- 4,183 bytes parent folder | download | duplicates (2)
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
  }
}