Skip to content

export * from "mod" declarations are elided when "mod" has no exports #37123

Closed
@weswigham

Description

@weswigham

TypeScript Version: 3.7.x-dev.201xxxxx

Search Terms:

Code

// @filename: register.ts
const r: any[] = [];
export function register(data: any) {
  r.push(data);
}
// @filename: data1.ts
import { register } from "./";
register("ok");
// @filename: index.ts
export * from "./register";
export * from "./data1";

Expected behavior:

// @filename: register.js
var r = [];
function register(data) {
  r.push(data);
}
exports.register = register;
// @filename: data1.js
var data1_1 = require("./");
data1_1.register("ok");
// @filename: index.js
// helpers
__exportStar(require("./register"), exports);
__exportStar(require("./data1"), exports);

Actual behavior:

// @filename: register.js
var r = [];
function register(data) {
  r.push(data);
}
exports.register = register;
// @filename: data1.js
var data1_1 = require("./");
data1_1.register("ok");
// @filename: index.js
// helpers
__exportStar(require("./register"), exports);

The reexport for file data1 is mistakenly dropped from index.js.

Playground Link:

Related Issues:

Metadata

Metadata

Assignees

Labels

Breaking ChangeWould introduce errors in existing codeBugA bug in TypeScriptDomain: ES ModulesThe issue relates to import/export style module behavior

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions