Skip to content

[Bug]: top level vars are ignored by dead code elimination #9279

Description

@dangreen

Reproduction link or steps

https://repl.rolldown.rs/#eNptUNFugzAM/BUrexhIFajtG9Oe9ht5CeDQbKmDEtN1Qvz7TGi3VZoUKTnnzvbdrKxqZuWox2vFaX2Tan7xTnUC6/op4uACgXetlDVdTIQpYQ+vYI1P+KLJTtTxymFMXJQwa9LsLBQrr4SIPEWC/eEoXM03eDzsBS6aZARSv03J6DbwvommLlAKHisfhmIbUYr0USf7omo4TrjsVAze9+GTKlFaN/yx98/PZtSdxxAZZujROsK3/A0L2BjO8HyXPYsBwmumCtFMPt8/gkKsg2w+TtzA1rI6I5sql3ZQ18AnBOs8JkjosWNJsv3K1XZiFt9y0HQnYNOuzUQSxjVdCWIpxaj4G033YQas3lMQU5uzh9rmKS+jVY+jBIXUOUxaNTBL6HLUIp0uQvNmDVUt333kt0s=

What is expected?

//#region index.ts
function test() {
	return 321;
}
console.log(test());
//#endregion

What is actually happening?

//#region index.ts
var used = false;
function test() {
	if (used) return 123;
	return 321;
}
console.log(test());
//#endregion

System Info

Rolldown Repl

Any additional comments?

If replace var with let - output is correct

https://repl.rolldown.rs/#eNptUNFugzAM/BUreyhIFajtG9Oe9ht5CeDQbKmDiLN1Qvz7TGi3VZoUKTnnzvbdrKxqZuWox2vFcX2Tan7xXnUC6/ppwsEFAu9aKWvyyJAi9vAC1viIz5psoo5XDmPkooRZk2ZnoVh5JUzIaSI4HE/C1XyDp+NB4KJJRiD125SMbgPvm2jqAsXgsfJhKLYRpUgfdbIvqoanhMteTcH7PnxSJUrrhj/2/vnZjLrLGCaGGXq0jvA1f8MCdgoX2N1lOzFAeM1UIZrk8/0jKMQ6yOZj4ga2ltUF2VS5tIe6Bj4jWOcxQkSPHUuS7VeutolZfMtB052BTbs2E0kY13QliKUUo+JvNN27GbB6i0FMbc4eapunvIxWPY4SFFLnMGrVwCyhy1GLdPoQmjdrqGr5BnZ0t0c=

Rollup correctly handles var

https://rollupjs.org/repl/?version=4.60.2&shareable=eyJleGFtcGxlIjpudWxsLCJtb2R1bGVzIjpbeyJjb2RlIjoiLy8jcmVnaW9uIGxpYi50c1xudmFyIHVzZWQgPSBmYWxzZTtcbmZ1bmN0aW9uIHRlc3QoKSB7XG5cdGlmICh1c2VkKSByZXR1cm4gMTIzO1xuXHRyZXR1cm4gMzIxO1xufVxuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gaW5kZXgudHNcbmNvbnNvbGUubG9nKHRlc3QoKSk7XG4vLyNlbmRyZWdpb25cbiIsImlzRW50cnkiOnRydWUsIm5hbWUiOiJtYWluLmpzIn1dLCJvcHRpb25zIjp7fX0=

Metadata

Metadata

Assignees

Type

Fields

Priority

None yet

Effort

None yet

Projects

Status
Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions