Skip to content

Transform namespaces declared with module keyword to namespace keyword in d.ts files #54134

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 31 additions & 2 deletions src/compiler/transformers/declarations.ts
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@ import {
ImportTypeNode,
IndexSignatureDeclaration,
InterfaceDeclaration,
isAmbientModule,
isAnyImportSyntax,
isArray,
isArrayBindingElement,
Expand Down Expand Up @@ -161,8 +162,10 @@ import {
MethodSignature,
Modifier,
ModifierFlags,
ModifierLike,
ModuleBody,
ModuleDeclaration,
ModuleName,
NamedDeclaration,
NamespaceDeclaration,
needsScopeMarker,
Expand Down Expand Up @@ -1419,6 +1422,31 @@ export function transformDeclarations(context: TransformationContext) {
return factory.updateModifiers(statement, modifiers);
}

function updateModuleDeclarationAndKeyword(
node: ModuleDeclaration,
modifiers: readonly ModifierLike[] | undefined,
name: ModuleName,
body: ModuleBody | undefined
) {
const updated = factory.updateModuleDeclaration(node, modifiers, name, body);

if (isAmbientModule(updated) || updated.flags & NodeFlags.Namespace) {
return updated;
}

const fixed = factory.createModuleDeclaration(
updated.modifiers,
updated.name,
updated.body,
updated.flags | NodeFlags.Namespace
);

setOriginalNode(fixed, updated);
setTextRange(fixed, updated);

return fixed;
}

function transformTopLevelDeclaration(input: LateVisibilityPaintedStatement) {
if (lateMarkedStatements) {
while (orderedRemoveItem(lateMarkedStatements, input));
Expand Down Expand Up @@ -1595,7 +1623,8 @@ export function transformDeclarations(context: TransformationContext) {
needsScopeFixMarker = oldNeedsScopeFix;
resultHasScopeMarker = oldHasScopeFix;
const mods = ensureModifiers(input);
return cleanup(factory.updateModuleDeclaration(

return cleanup(updateModuleDeclarationAndKeyword(
input,
mods,
isExternalModuleAugmentation(input) ? rewriteModuleSpecifier(input, input.name) : input.name,
Expand All @@ -1611,7 +1640,7 @@ export function transformDeclarations(context: TransformationContext) {
const id = getOriginalNodeId(inner!); // TODO: GH#18217
const body = lateStatementReplacementMap.get(id);
lateStatementReplacementMap.delete(id);
return cleanup(factory.updateModuleDeclaration(
return cleanup(updateModuleDeclarationAndKeyword(
input,
mods,
input.name,
Expand Down
4 changes: 2 additions & 2 deletions tests/baselines/reference/aliasInaccessibleModule.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ var M;


//// [aliasInaccessibleModule.d.ts]
declare module M {
module N {
declare namespace M {
namespace N {
}
export import X = N;
export {};
Expand Down
4 changes: 2 additions & 2 deletions tests/baselines/reference/aliasInaccessibleModule2.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@ var M;


//// [aliasInaccessibleModule2.d.ts]
declare module M {
module N {
declare namespace M {
namespace N {
}
import R = N;
export import X = R;
Expand Down
2 changes: 1 addition & 1 deletion tests/baselines/reference/classConstructorAccessibility.js
Original file line number Diff line number Diff line change
Expand Up @@ -98,5 +98,5 @@ declare class E {
declare var c: C;
declare var d: any;
declare var e: any;
declare module Generic {
declare namespace Generic {
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ var M;


//// [classDoesNotDependOnPrivateMember.d.ts]
declare module M {
declare namespace M {
class C {
private x;
}
Expand Down
6 changes: 3 additions & 3 deletions tests/baselines/reference/classdecl.js
Original file line number Diff line number Diff line change
Expand Up @@ -233,14 +233,14 @@ declare class a {
}
declare class b extends a {
}
declare module m1 {
declare namespace m1 {
class b {
}
interface ib {
}
}
declare module m2 {
module m3 {
declare namespace m2 {
namespace m3 {
class c extends b {
}
class ib2 implements m1.ib {
Expand Down
2 changes: 1 addition & 1 deletion tests/baselines/reference/commentsDottedModuleName.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ define(["require", "exports"], function (require, exports) {

//// [commentsDottedModuleName.d.ts]
/** this is multi declare module*/
export declare module outerModule.InnerModule {
export declare namespace outerModule.InnerModule {
class b {
}
}
8 changes: 4 additions & 4 deletions tests/baselines/reference/commentsExternalModules.js
Original file line number Diff line number Diff line change
Expand Up @@ -139,11 +139,11 @@ define(["require", "exports", "commentsExternalModules_0"], function (require, e

//// [commentsExternalModules_0.d.ts]
/** Module comment*/
export declare module m1 {
export declare namespace m1 {
/** b's comment*/
var b: number;
/** m2 comments*/
module m2 {
namespace m2 {
/** class comment;*/
class c {
}
Expand All @@ -154,12 +154,12 @@ export declare module m1 {
function fooExport(): number;
}
/** Module comment */
export declare module m4 {
export declare namespace m4 {
/** b's comment */
var b: number;
/** m2 comments
*/
module m2 {
namespace m2 {
/** class comment; */
class c {
}
Expand Down
8 changes: 4 additions & 4 deletions tests/baselines/reference/commentsExternalModules2.js
Original file line number Diff line number Diff line change
Expand Up @@ -140,11 +140,11 @@ define(["require", "exports", "commentsExternalModules2_0"], function (require,

//// [commentsExternalModules2_0.d.ts]
/** Module comment*/
export declare module m1 {
export declare namespace m1 {
/** b's comment*/
var b: number;
/** m2 comments*/
module m2 {
namespace m2 {
/** class comment;*/
class c {
}
Expand All @@ -155,12 +155,12 @@ export declare module m1 {
function fooExport(): number;
}
/** Module comment */
export declare module m4 {
export declare namespace m4 {
/** b's comment */
var b: number;
/** m2 comments
*/
module m2 {
namespace m2 {
/** class comment; */
class c {
}
Expand Down
8 changes: 4 additions & 4 deletions tests/baselines/reference/commentsExternalModules3.js
Original file line number Diff line number Diff line change
Expand Up @@ -138,11 +138,11 @@ exports.newVar2 = new extMod.m4.m2.c();

//// [commentsExternalModules2_0.d.ts]
/** Module comment*/
export declare module m1 {
export declare namespace m1 {
/** b's comment*/
var b: number;
/** m2 comments*/
module m2 {
namespace m2 {
/** class comment;*/
class c {
}
Expand All @@ -153,12 +153,12 @@ export declare module m1 {
function fooExport(): number;
}
/** Module comment */
export declare module m4 {
export declare namespace m4 {
/** b's comment */
var b: number;
/** m2 comments
*/
module m2 {
namespace m2 {
/** class comment; */
class c {
}
Expand Down
2 changes: 1 addition & 1 deletion tests/baselines/reference/commentsFormatting.js
Original file line number Diff line number Diff line change
Expand Up @@ -188,7 +188,7 @@ this is 4 spaces left aligned but above line is empty


//// [commentsFormatting.d.ts]
declare module m {
declare namespace m {
/** this is first line - aligned to class declaration
* this is 4 spaces left aligned
* this is 3 spaces left aligned
Expand Down
24 changes: 12 additions & 12 deletions tests/baselines/reference/commentsModules.js
Original file line number Diff line number Diff line change
Expand Up @@ -270,11 +270,11 @@ new m7.m8.m9.c();

//// [commentsModules.d.ts]
/** Module comment*/
declare module m1 {
declare namespace m1 {
/** b's comment*/
var b: number;
/** m2 comments*/
module m2 {
namespace m2 {
/** class comment;*/
class c {
}
Expand All @@ -291,44 +291,44 @@ declare module m1 {
}
declare var myvar: m1.m2.c;
/** module comment of m2.m3*/
declare module m2.m3 {
declare namespace m2.m3 {
/** Exported class comment*/
class c {
}
}
/** module comment of m3.m4.m5*/
declare module m3.m4.m5 {
declare namespace m3.m4.m5 {
/** Exported class comment*/
class c {
}
}
/** module comment of m4.m5.m6*/
declare module m4.m5.m6 {
module m7 {
declare namespace m4.m5.m6 {
namespace m7 {
/** Exported class comment*/
class c {
}
}
}
/** module comment of m5.m6.m7*/
declare module m5.m6.m7 {
declare namespace m5.m6.m7 {
/** module m8 comment*/
module m8 {
namespace m8 {
/** Exported class comment*/
class c {
}
}
}
declare module m6.m7 {
module m8 {
declare namespace m6.m7 {
namespace m8 {
/** Exported class comment*/
class c {
}
}
}
declare module m7.m8 {
declare namespace m7.m8 {
/** module m9 comment*/
module m9 {
namespace m9 {
/** Exported class comment*/
class c {
}
Expand Down
6 changes: 3 additions & 3 deletions tests/baselines/reference/commentsMultiModuleMultiFile.js
Original file line number Diff line number Diff line change
Expand Up @@ -100,12 +100,12 @@ define(["require", "exports"], function (require, exports) {

//// [commentsMultiModuleMultiFile_0.d.ts]
/** this is multi declare module*/
export declare module multiM {
export declare namespace multiM {
class b {
}
}
/** thi is multi module 2*/
export declare module multiM {
export declare namespace multiM {
/** class c comment*/
class c {
}
Expand All @@ -114,7 +114,7 @@ export declare module multiM {
}
//// [commentsMultiModuleMultiFile_1.d.ts]
/** this is multi module 3 comment*/
export declare module multiM {
export declare namespace multiM {
/** class d comment*/
class d {
}
Expand Down
4 changes: 2 additions & 2 deletions tests/baselines/reference/commentsMultiModuleSingleFile.js
Original file line number Diff line number Diff line change
Expand Up @@ -65,14 +65,14 @@ new multiM.c();

//// [commentsMultiModuleSingleFile.d.ts]
/** this is multi declare module*/
declare module multiM {
declare namespace multiM {
/** class b*/
class b {
}
class d {
}
}
declare module multiM {
declare namespace multiM {
/** class c comment*/
class c {
}
Expand Down
4 changes: 2 additions & 2 deletions tests/baselines/reference/commentsdoNotEmitComments.js
Original file line number Diff line number Diff line change
Expand Up @@ -158,12 +158,12 @@ interface i1 {
prop: string;
}
declare var i1_i: i1;
declare module m1 {
declare namespace m1 {
class b {
x: number;
constructor(x: number);
}
module m2 {
namespace m2 {
}
}
declare var x: any;
Expand Down
4 changes: 2 additions & 2 deletions tests/baselines/reference/commentsemitComments.js
Original file line number Diff line number Diff line change
Expand Up @@ -186,13 +186,13 @@ interface i1 {
/**interface instance comments*/
declare var i1_i: i1;
/** this is module comment*/
declare module m1 {
declare namespace m1 {
/** class b */
class b {
x: number;
constructor(x: number);
}
module m2 {
namespace m2 {
}
}
declare var x: any;
2 changes: 1 addition & 1 deletion tests/baselines/reference/constDeclarations2.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ var M;


//// [constDeclarations2.d.ts]
declare module M {
declare namespace M {
const c1 = false;
const c2: number;
const c3 = 0, c4: string, c5: any;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ declare module "test" {

//// [declFileAliasUseBeforeDeclaration2.d.ts]
declare module "test" {
module A {
namespace A {
class C {
}
}
Expand Down
Loading