Fix an acorn optimizer regression from #10724 (#10749)

Don't crash on certain lambda contents that partially match
what we are looking for, but are not identical. Specifically,
we assumed the first line in lambda was a var or an assign.
This commit is contained in:
Alon Zakai 2020-03-21 14:29:03 -07:00 коммит произвёл GitHub
Родитель 9198891ae5
Коммит fdd885eb92
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
2 изменённых файлов: 6 добавлений и 1 удалений

Просмотреть файл

@ -99,3 +99,8 @@ Module['dynCall_vi'](ptr, 1); // use on module
dynCall('vii', ptr, [2, 3]); // use indirectly, depending on analysis of dynCall(string, )
// and viii is never used, so definitely legitimately eliminatable
// Don't crash on this code pattern, which regressed in #10724
(function(output) {
x++;
});

Просмотреть файл

@ -685,7 +685,7 @@ function emitDCEGraph(ast) {
value = assign.right;
}
}
if (target.type === 'Identifier' && target.name === 'asm' && value) {
if (target && target.type === 'Identifier' && target.name === 'asm' && value) {
if (value.type === 'MemberExpression' &&
value.object.type === 'MemberExpression' &&
value.object.object.type === 'Identifier' &&