evanw / evanw/esbuild

Inline function calls with `#__NO_SIDE_EFFECTS__` comments

Open
#3,571 1 comment 0 reactions 0 assignees View on GitHub
suboptimal-output
Dominant language
Go
Stars
40.1k
Forks
1.3k
PR merge metrics
No merged PRs in 30d

Description

https://esbuild.github.io/try/#dAAwLjE5LjExAC0tbWluaWZ5AC8qI19fTk9fU0lERV9FRkZFQ1RTX18qLwpmdW5jdGlvbiBjaGlsZChub2RlKSB7CglyZXR1cm4gbm9kZS5maXJzdENoaWxkOwp9CgooZnVuY3Rpb24oKSB7Cgl2YXIgZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lkJyk7Cgl2YXIgZGl2XzEgPSBjaGlsZChkaXYpOwoJdmFyIGRpdl8yID0gY2hpbGQoZGl2XzEpOwoJdmFyIGRpdl8zID0gY2hpbGQoZGl2XzIpOwoJdmFyIGRpdl80ID0gc2libGluZyhzaWJsaW5nKGRpdl8zKSk7Cgl2YXIgZGl2XzUgPSBjaGlsZChkaXZfNCk7Cgl2YXIgZGl2XzYgPSBjaGlsZChkaXZfNSk7Cgl2YXIgYnV0dG9uID0gY2hpbGQoZGl2XzYpOwoJdmFyIGRpdl83ID0gc2libGluZyhzaWJsaW5nKGRpdl82KSk7Cgl2YXIgYnV0dG9uXzEgPSBjaGlsZChkaXZfNyk7Cgl2YXIgZGl2XzggPSBzaWJsaW5nKHNpYmxpbmcoZGl2XzcpKTsKCXZhciBidXR0b25fMiA9IGNoaWxkKGRpdl84KTsKCXZhciBkaXZfOSA9IHNpYmxpbmcoc2libGluZyhkaXZfOCkpOwoJdmFyIGJ1dHRvbl8zID0gY2hpbGQoZGl2XzkpOwoJdmFyIGRpdl8xMCA9IHNpYmxpbmcoc2libGluZyhkaXZfOSkpOwoJdmFyIGJ1dHRvbl80ID0gY2hpbGQoZGl2XzEwKTsKCXZhciBkaXZfMTEgPSBzaWJsaW5nKHNpYmxpbmcoZGl2XzEwKSk7Cgl2YXIgYnV0dG9uXzUgPSBjaGlsZChkaXZfMTEpOwoJdmFyIHRhYmxlID0gc2libGluZyhzaWJsaW5nKGRpdl8xKSk7Cgl2YXIgdGJvZHkgPSBjaGlsZCh0YWJsZSk7Cn0pKCk

The minifier outputs code like `v=child(i),d=child(v),l=child(d)`. This could be simplified to `child(child(child(...)))`.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with the esbuild Try reproduction in the issue and inspect the minifier's handling of `#__NO_SIDE_EFFECTS__` comments and chained function calls. The work is done when the shown `child(...)` sequence is emitted as nested calls such as `child(child(child(...)))` without changing behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
go, javascript
Domain
compilers
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.