File tree Expand file tree Collapse file tree 3 files changed +15
-12
lines changed
tests/baselines/reference Expand file tree Collapse file tree 3 files changed +15
-12
lines changed Original file line number Diff line number Diff line change @@ -915,8 +915,11 @@ namespace ts {
915
915
}
916
916
if ((source.flags | target.flags) & SymbolFlags.JSContainer) {
917
917
const sourceInitializer = getJSInitializerSymbol(source);
918
- const targetInitializer = getJSInitializerSymbol(target);
918
+ let targetInitializer = getJSInitializerSymbol(target);
919
919
if (sourceInitializer !== source || targetInitializer !== target) {
920
+ if (!(targetInitializer.flags & SymbolFlags.Transient)) {
921
+ targetInitializer = cloneSymbol(targetInitializer);
922
+ }
920
923
mergeSymbol(targetInitializer, sourceInitializer);
921
924
}
922
925
}
@@ -19452,7 +19455,7 @@ namespace ts {
19452
19455
}
19453
19456
19454
19457
const links = getNodeLinks(node);
19455
- const type = getTypeOfSymbol(node.symbol);
19458
+ const type = getTypeOfSymbol(getMergedSymbol( node.symbol) );
19456
19459
if (isTypeAny(type)) {
19457
19460
return type;
19458
19461
}
Original file line number Diff line number Diff line change 1
1
=== tests/cases/conformance/salsa/def.js ===
2
2
var Outer = {};
3
- >Outer : typeof Outer
4
- >{} : typeof Outer
3
+ >Outer : { [x: string]: any; Inner(): void; }
4
+ >{} : { [x: string]: any; Inner(): void; }
5
5
6
6
=== tests/cases/conformance/salsa/work.js ===
7
7
Outer.Inner = function () {}
8
8
>Outer.Inner = function () {} : () => void
9
9
>Outer.Inner : () => void
10
- >Outer : typeof Outer
10
+ >Outer : { [x: string]: any; Inner(): void; }
11
11
>Inner : () => void
12
12
>function () {} : () => void
13
13
14
14
Outer.Inner.prototype = {
15
15
>Outer.Inner.prototype = { x: 1, m() { }} : { [x: string]: any; x: number; m(): void; }
16
16
>Outer.Inner.prototype : any
17
17
>Outer.Inner : () => void
18
- >Outer : typeof Outer
18
+ >Outer : { [x: string]: any; Inner(): void; }
19
19
>Inner : () => void
20
20
>prototype : any
21
21
>{ x: 1, m() { }} : { [x: string]: any; x: number; m(): void; }
@@ -48,7 +48,7 @@ var inno = new Outer.Inner()
48
48
>inno : { [x: string]: any; x: number; m(): void; }
49
49
>new Outer.Inner() : { [x: string]: any; x: number; m(): void; }
50
50
>Outer.Inner : () => void
51
- >Outer : typeof Outer
51
+ >Outer : { [x: string]: any; Inner(): void; }
52
52
>Inner : () => void
53
53
54
54
inno.x
Original file line number Diff line number Diff line change 1
1
=== tests/cases/conformance/salsa/def.js ===
2
2
var Outer = {};
3
- >Outer : typeof Outer
4
- >{} : typeof Outer
3
+ >Outer : { [x: string]: any; Inner: typeof Inner; }
4
+ >{} : { [x: string]: any; Inner: typeof Inner; }
5
5
6
6
=== tests/cases/conformance/salsa/a.js ===
7
7
Outer.Inner = class {
8
8
>Outer.Inner = class { constructor() { /** @type {number} */ this.y = 12 }} : typeof Inner
9
9
>Outer.Inner : typeof Inner
10
- >Outer : typeof Outer
10
+ >Outer : { [x: string]: any; Inner: typeof Inner; }
11
11
>Inner : typeof Inner
12
12
>class { constructor() { /** @type {number} */ this.y = 12 }} : typeof Inner
13
13
@@ -35,7 +35,7 @@ var inner = new Outer.Inner()
35
35
>inner : Inner
36
36
>new Outer.Inner() : Inner
37
37
>Outer.Inner : typeof Inner
38
- >Outer : typeof Outer
38
+ >Outer : { [x: string]: any; Inner: typeof Inner; }
39
39
>Inner : typeof Inner
40
40
41
41
inner.y
@@ -57,7 +57,7 @@ var z = new Outer.Inner()
57
57
>z : Inner
58
58
>new Outer.Inner() : Inner
59
59
>Outer.Inner : typeof Inner
60
- >Outer : typeof Outer
60
+ >Outer : { [x: string]: any; Inner: typeof Inner; }
61
61
>Inner : typeof Inner
62
62
63
63
z.y
You can’t perform that action at this time.
0 commit comments