mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-02-05 16:38:05 -06:00
Reset constEnumOnlyModule flag on relevant symbol merges in binder (#29079)
This commit is contained in:
parent
3edd2d6893
commit
4e3bc9e35a
@ -233,6 +233,11 @@ namespace ts {
|
||||
symbol.members = createSymbolTable();
|
||||
}
|
||||
|
||||
// On merge of const enum module with class or function, reset const enum only flag (namespaces will already recalculate)
|
||||
if (symbol.constEnumOnlyModule && (symbol.flags & (SymbolFlags.Function | SymbolFlags.Class | SymbolFlags.RegularEnum))) {
|
||||
symbol.constEnumOnlyModule = false;
|
||||
}
|
||||
|
||||
if (symbolFlags & SymbolFlags.Value) {
|
||||
setValueDeclaration(symbol, node);
|
||||
}
|
||||
|
||||
@ -0,0 +1,25 @@
|
||||
//// [tests/cases/compiler/emitClassMergedWithConstNamespaceNotElided.ts] ////
|
||||
|
||||
//// [enum.d.ts]
|
||||
export namespace Clone {
|
||||
const enum LOCAL {
|
||||
AUTO = 0,
|
||||
LOCAL = 1,
|
||||
NO_LOCAL = 2,
|
||||
NO_LINKS = 3
|
||||
}
|
||||
}
|
||||
|
||||
export class Clone {
|
||||
static clone(url: string): void;
|
||||
}
|
||||
//// [usage.ts]
|
||||
import {Clone} from "./enum";
|
||||
|
||||
Clone.clone("ok");
|
||||
|
||||
//// [usage.js]
|
||||
"use strict";
|
||||
exports.__esModule = true;
|
||||
var enum_1 = require("./enum");
|
||||
enum_1.Clone.clone("ok");
|
||||
@ -0,0 +1,37 @@
|
||||
=== tests/cases/compiler/enum.d.ts ===
|
||||
export namespace Clone {
|
||||
>Clone : Symbol(Clone, Decl(enum.d.ts, 0, 0), Decl(enum.d.ts, 7, 1))
|
||||
|
||||
const enum LOCAL {
|
||||
>LOCAL : Symbol(LOCAL, Decl(enum.d.ts, 0, 24))
|
||||
|
||||
AUTO = 0,
|
||||
>AUTO : Symbol(LOCAL.AUTO, Decl(enum.d.ts, 1, 22))
|
||||
|
||||
LOCAL = 1,
|
||||
>LOCAL : Symbol(LOCAL.LOCAL, Decl(enum.d.ts, 2, 17))
|
||||
|
||||
NO_LOCAL = 2,
|
||||
>NO_LOCAL : Symbol(LOCAL.NO_LOCAL, Decl(enum.d.ts, 3, 18))
|
||||
|
||||
NO_LINKS = 3
|
||||
>NO_LINKS : Symbol(LOCAL.NO_LINKS, Decl(enum.d.ts, 4, 21))
|
||||
}
|
||||
}
|
||||
|
||||
export class Clone {
|
||||
>Clone : Symbol(Clone, Decl(enum.d.ts, 0, 0), Decl(enum.d.ts, 7, 1))
|
||||
|
||||
static clone(url: string): void;
|
||||
>clone : Symbol(Clone.clone, Decl(enum.d.ts, 9, 20))
|
||||
>url : Symbol(url, Decl(enum.d.ts, 10, 17))
|
||||
}
|
||||
=== tests/cases/compiler/usage.ts ===
|
||||
import {Clone} from "./enum";
|
||||
>Clone : Symbol(Clone, Decl(usage.ts, 0, 8))
|
||||
|
||||
Clone.clone("ok");
|
||||
>Clone.clone : Symbol(Clone.clone, Decl(enum.d.ts, 9, 20))
|
||||
>Clone : Symbol(Clone, Decl(usage.ts, 0, 8))
|
||||
>clone : Symbol(Clone.clone, Decl(enum.d.ts, 9, 20))
|
||||
|
||||
@ -0,0 +1,41 @@
|
||||
=== tests/cases/compiler/enum.d.ts ===
|
||||
export namespace Clone {
|
||||
const enum LOCAL {
|
||||
>LOCAL : LOCAL
|
||||
|
||||
AUTO = 0,
|
||||
>AUTO : LOCAL.AUTO
|
||||
>0 : 0
|
||||
|
||||
LOCAL = 1,
|
||||
>LOCAL : LOCAL.LOCAL
|
||||
>1 : 1
|
||||
|
||||
NO_LOCAL = 2,
|
||||
>NO_LOCAL : LOCAL.NO_LOCAL
|
||||
>2 : 2
|
||||
|
||||
NO_LINKS = 3
|
||||
>NO_LINKS : LOCAL.NO_LINKS
|
||||
>3 : 3
|
||||
}
|
||||
}
|
||||
|
||||
export class Clone {
|
||||
>Clone : Clone
|
||||
|
||||
static clone(url: string): void;
|
||||
>clone : (url: string) => void
|
||||
>url : string
|
||||
}
|
||||
=== tests/cases/compiler/usage.ts ===
|
||||
import {Clone} from "./enum";
|
||||
>Clone : typeof Clone
|
||||
|
||||
Clone.clone("ok");
|
||||
>Clone.clone("ok") : void
|
||||
>Clone.clone : (url: string) => void
|
||||
>Clone : typeof Clone
|
||||
>clone : (url: string) => void
|
||||
>"ok" : "ok"
|
||||
|
||||
@ -0,0 +1,18 @@
|
||||
// @esModuleInterop: true
|
||||
// @filename: enum.d.ts
|
||||
export namespace Clone {
|
||||
const enum LOCAL {
|
||||
AUTO = 0,
|
||||
LOCAL = 1,
|
||||
NO_LOCAL = 2,
|
||||
NO_LINKS = 3
|
||||
}
|
||||
}
|
||||
|
||||
export class Clone {
|
||||
static clone(url: string): void;
|
||||
}
|
||||
// @filename: usage.ts
|
||||
import {Clone} from "./enum";
|
||||
|
||||
Clone.clone("ok");
|
||||
Loading…
x
Reference in New Issue
Block a user