Skip to content

[Bug]: used export in CJS is wrongly removed when there's a namespace import #8675

@sapphi-red

Description

@sapphi-red

Reproduction link or steps

REPL

What is expected?

function createStyled to exist in the output. In other words, the output to be:

//#region \0rolldown/runtime.js
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __commonJSMin = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
var __copyProps = (to, from, except, desc) => {
	if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
		key = keys[i];
		if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
			get: ((k) => from[k]).bind(null, key),
			enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
		});
	}
	return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
	value: mod,
	enumerable: true
}) : target, mod));
//#endregion
//#region react.cjs
var require_react = /* @__PURE__ */ __commonJSMin(((exports) => {
	exports.forwardRef = () => {};
}));
//#endregion
//#region createStyled.cjs
var require_createStyled = /* @__PURE__ */ __commonJSMin(((exports) => {
	Object.defineProperty(exports, "__esModule", { value: true });
	exports.default = createStyled;
	function createStyled(input = {}) {
		return () => {
			return () => {};
		};
	}
}));
//#endregion
//#region styled.js
var import_react = /* @__PURE__ */ __toESM(require_react(), 1);
//#endregion
//#region bar.mjs
const TouchRippleRoot = (0, (/* @__PURE__ */ __toESM(require_createStyled())).default)()("span", { name: "MuiTouchRipple" })({ overflow: "hidden" });
const TouchRipple = /* @__PURE__ */ import_react.forwardRef(() => {});
//#endregion
//#region input.mjs
console.log(TouchRipple, TouchRippleRoot);
//#endregion

createStyled is called in the output. you can confirm this by running the output with treeshake: false.

What is actually happening?

function createStyled is missing.
The output is:

//#region \0rolldown/runtime.js
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __commonJSMin = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
var __copyProps = (to, from, except, desc) => {
	if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
		key = keys[i];
		if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
			get: ((k) => from[k]).bind(null, key),
			enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
		});
	}
	return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
	value: mod,
	enumerable: true
}) : target, mod));
//#endregion
//#region react.cjs
var require_react = /* @__PURE__ */ __commonJSMin(((exports) => {
	exports.forwardRef = () => {};
}));
//#endregion
//#region createStyled.cjs
var require_createStyled = /* @__PURE__ */ __commonJSMin(((exports) => {
	Object.defineProperty(exports, "__esModule", { value: true });
}));
//#endregion
//#region styled.js
var import_react = /* @__PURE__ */ __toESM(require_react(), 1);
//#endregion
//#region bar.mjs
const TouchRippleRoot = (0, (/* @__PURE__ */ __toESM(require_createStyled())).default)()("span", { name: "MuiTouchRipple" })({ overflow: "hidden" });
const TouchRipple = /* @__PURE__ */ import_react.forwardRef(() => {});
//#endregion
//#region input.mjs
console.log(TouchRipple, TouchRippleRoot);
//#endregion

System Info

REPL 1.0.0-rc.9

Any additional comments?

Originally reported at vitejs/vite#21850

Metadata

Metadata

Type

Priority

None yet

Effort

None yet

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions