First half of fix
Still doesn't work correctly for multiple merges
This commit is contained in:
parent
fd17f77cc9
commit
c49ef36964
|
@ -915,8 +915,11 @@ namespace ts {
|
|||
}
|
||||
if ((source.flags | target.flags) & SymbolFlags.JSContainer) {
|
||||
const sourceInitializer = getJSInitializerSymbol(source);
|
||||
const targetInitializer = getJSInitializerSymbol(target);
|
||||
let targetInitializer = getJSInitializerSymbol(target);
|
||||
if (sourceInitializer !== source || targetInitializer !== target) {
|
||||
if (!(targetInitializer.flags & SymbolFlags.Transient)) {
|
||||
targetInitializer = cloneSymbol(targetInitializer);
|
||||
}
|
||||
mergeSymbol(targetInitializer, sourceInitializer);
|
||||
}
|
||||
}
|
||||
|
@ -19452,7 +19455,7 @@ namespace ts {
|
|||
}
|
||||
|
||||
const links = getNodeLinks(node);
|
||||
const type = getTypeOfSymbol(node.symbol);
|
||||
const type = getTypeOfSymbol(getMergedSymbol(node.symbol));
|
||||
if (isTypeAny(type)) {
|
||||
return type;
|
||||
}
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
=== tests/cases/conformance/salsa/def.js ===
|
||||
var Outer = {};
|
||||
>Outer : typeof Outer
|
||||
>{} : typeof Outer
|
||||
>Outer : { [x: string]: any; Inner(): void; }
|
||||
>{} : { [x: string]: any; Inner(): void; }
|
||||
|
||||
=== tests/cases/conformance/salsa/work.js ===
|
||||
Outer.Inner = function () {}
|
||||
>Outer.Inner = function () {} : () => void
|
||||
>Outer.Inner : () => void
|
||||
>Outer : typeof Outer
|
||||
>Outer : { [x: string]: any; Inner(): void; }
|
||||
>Inner : () => void
|
||||
>function () {} : () => void
|
||||
|
||||
|
@ -15,7 +15,7 @@ Outer.Inner.prototype = {
|
|||
>Outer.Inner.prototype = { x: 1, m() { }} : { [x: string]: any; x: number; m(): void; }
|
||||
>Outer.Inner.prototype : any
|
||||
>Outer.Inner : () => void
|
||||
>Outer : typeof Outer
|
||||
>Outer : { [x: string]: any; Inner(): void; }
|
||||
>Inner : () => void
|
||||
>prototype : any
|
||||
>{ x: 1, m() { }} : { [x: string]: any; x: number; m(): void; }
|
||||
|
@ -48,7 +48,7 @@ var inno = new Outer.Inner()
|
|||
>inno : { [x: string]: any; x: number; m(): void; }
|
||||
>new Outer.Inner() : { [x: string]: any; x: number; m(): void; }
|
||||
>Outer.Inner : () => void
|
||||
>Outer : typeof Outer
|
||||
>Outer : { [x: string]: any; Inner(): void; }
|
||||
>Inner : () => void
|
||||
|
||||
inno.x
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
=== tests/cases/conformance/salsa/def.js ===
|
||||
var Outer = {};
|
||||
>Outer : typeof Outer
|
||||
>{} : typeof Outer
|
||||
>Outer : { [x: string]: any; Inner: typeof Inner; }
|
||||
>{} : { [x: string]: any; Inner: typeof Inner; }
|
||||
|
||||
=== tests/cases/conformance/salsa/a.js ===
|
||||
Outer.Inner = class {
|
||||
>Outer.Inner = class { constructor() { /** @type {number} */ this.y = 12 }} : typeof Inner
|
||||
>Outer.Inner : typeof Inner
|
||||
>Outer : typeof Outer
|
||||
>Outer : { [x: string]: any; Inner: typeof Inner; }
|
||||
>Inner : typeof Inner
|
||||
>class { constructor() { /** @type {number} */ this.y = 12 }} : typeof Inner
|
||||
|
||||
|
@ -35,7 +35,7 @@ var inner = new Outer.Inner()
|
|||
>inner : Inner
|
||||
>new Outer.Inner() : Inner
|
||||
>Outer.Inner : typeof Inner
|
||||
>Outer : typeof Outer
|
||||
>Outer : { [x: string]: any; Inner: typeof Inner; }
|
||||
>Inner : typeof Inner
|
||||
|
||||
inner.y
|
||||
|
@ -57,7 +57,7 @@ var z = new Outer.Inner()
|
|||
>z : Inner
|
||||
>new Outer.Inner() : Inner
|
||||
>Outer.Inner : typeof Inner
|
||||
>Outer : typeof Outer
|
||||
>Outer : { [x: string]: any; Inner: typeof Inner; }
|
||||
>Inner : typeof Inner
|
||||
|
||||
z.y
|
||||
|
|
Loading…
Reference in a new issue