facebookarchive/prepack
在 GitHub 查看Eliminate branches in residual functions when the comparison value never leaks
Open
#1,146 创建于 2017年11月10日
bootcampedenhancementhelp wantedlevel 3 (medium)react compilerserializer
仓库指标
- Star
- (14,268 star)
- PR 合并指标
- (30 天内没有已合并 PR)
描述
I'll just put this on the wish list.
(function() {
const Foo = Symbol();
const Bar = Symbol();
reducer = function(action) {
switch (action) {
case Foo:
console.log('foo');
break;
case Bar:
console.log('bar');
break;
}
};
leak = Bar;
})();
should turn into:
(function () {
var Bar = Symbol();
reducer = function (action) {
switch (action) {
case Bar:
console.log('bar');
break;
}
};
leak = Bar;
})();
Foo doesn't leak anywhere. Therefore it currently gets inlined to be created in the case statement producing a new Symbol every time. However, it should just dead code eliminate the whole conditional branch since it can never happen when the only remaining callsite is a condition.