**Description:**
Handles
```js
var FRUITS = { MANGO: "mango" }, getMangoLabel = (label) => label[FRUITS.MANGO];
```
while hoisting properties. In the code above, the initializer of the second variable declarator should be visited after hoisting the first variable declarator. Otherwise `FRUITS.MANGO` cannot be handled.
**Related issue:**
- Closes#9030
**Description:**
- The option `hoist_props` now does what it's supposed to do.
- Dropping of unused properties now does not drop properties too aggressively.
- The initializer of a dropped variable declaration is now properly visited.
- Indexing with string literals is not marked as a dynamic index anymore. This is required to handle codes like c3f67ceb1e/crates/swc_ecma_minifier/tests/terser/compress/hoist_props/name_collision_1/input.js (L1-L7).
**Description:**
I was trying to remove references to Weak Ref from minified code and
despite the expression not being used, it was still included.
E.g.
```
var x = WeakRef;
```
with
```
{
"minify": true,
"jsc": {
"minify": {
"compress": {
"pure_getters": true,
"unused": true
},
"mangle": true
}
}
}
```
outputs
```
WeakRef;
```
but when I use something on this list e.g. parseFloat, it gets cleaned
up and outputs empty string.
btw - I tried different options for pure_getters that I assumed would
allow me to say WeakRef as a getter was pure, but it had no effect.
WeakRef getter is as safe to remove as the other items on this list and
has no effect in accessing it.