- property access to `null` & `undefined` always has side effects - utilise `reduce_vars` to determine safe property access - may-be cases treated as side effects unless `unsafe`
86 lines
1.5 KiB
JavaScript
86 lines
1.5 KiB
JavaScript
side_effects: {
|
|
options = {
|
|
pure_getters: true,
|
|
reduce_vars: false,
|
|
side_effects: true,
|
|
toplevel: true,
|
|
unsafe: false,
|
|
}
|
|
input: {
|
|
var a, b = null, c = {};
|
|
a.prop;
|
|
b.prop;
|
|
c.prop;
|
|
d.prop;
|
|
null.prop;
|
|
(void 0).prop;
|
|
undefined.prop;
|
|
}
|
|
expect: {
|
|
var a, b = null, c = {};
|
|
a.prop;
|
|
b.prop;
|
|
c.prop;
|
|
d.prop;
|
|
null.prop;
|
|
(void 0).prop;
|
|
(void 0).prop;
|
|
}
|
|
}
|
|
|
|
side_effects_reduce_vars: {
|
|
options = {
|
|
pure_getters: true,
|
|
reduce_vars: true,
|
|
side_effects: true,
|
|
toplevel: true,
|
|
unsafe: false,
|
|
}
|
|
input: {
|
|
var a, b = null, c = {};
|
|
a.prop;
|
|
b.prop;
|
|
c.prop;
|
|
d.prop;
|
|
null.prop;
|
|
(void 0).prop;
|
|
undefined.prop;
|
|
}
|
|
expect: {
|
|
var a, b = null, c = {};
|
|
a.prop;
|
|
b.prop;
|
|
d.prop;
|
|
null.prop;
|
|
(void 0).prop;
|
|
(void 0).prop;
|
|
}
|
|
}
|
|
|
|
side_effects_unsafe: {
|
|
options = {
|
|
pure_getters: true,
|
|
reduce_vars: false,
|
|
side_effects: true,
|
|
toplevel: true,
|
|
unsafe: true,
|
|
}
|
|
input: {
|
|
var a, b = null, c = {};
|
|
a.prop;
|
|
b.prop;
|
|
c.prop;
|
|
d.prop;
|
|
null.prop;
|
|
(void 0).prop;
|
|
undefined.prop;
|
|
}
|
|
expect: {
|
|
var a, b = null, c = {};
|
|
d;
|
|
null.prop;
|
|
(void 0).prop;
|
|
(void 0).prop;
|
|
}
|
|
}
|