The sourcemap implement port from
[rust-sourcemap](https://github.com/getsentry/rust-sourcemap), but has
some different with it.
- Encode sourcemap at parallel, including quote `sourceContent` and
encode token to `vlq` mappings.
- Avoid `Sourcemap` some methods overhead, like `SourceMap::tokens()`
caused extra overhead at common cases. Here using `SourceViewToken` to
instead of it.
Related to:
https://github.com/oxc-project/oxc/pull/2822#issuecomment-2021802212
Although `babel` has a lot of test cases, we still need to add edge
cases that `babel` doesn't have.
This PR will allow us to add out test cases to
`/root/oxc/tasks/transform_conformance/tests`. The directory structure
is consistent with `babel`
For example
```shell
# cd /root/oxc/tasks/transform_conformance/tests
- babel-transform-plugin–optional-catch-binding
- test
- fixtures
- your tests # add test cases here
```
Before this PR for this given case:
```javascript
const _unused = "It's a lie, They gonna use me:(";
try {
throw 0;
} catch {
console.log(_unused);
}
```
We would've generated this:
```javascript
const _unused = "It's a lie, They gonna use me:(";
try {
throw 0;
} catch (_unused) {
console.log(_unused);
}
```
This is incorrect, This PR aims to use the `CreateVars` trait in order
to ensure the variable uniqueness.
Now it would output this:
```javascript
const _unused = "It's a lie, They gonna use me:(";
try {
throw 0;
} catch (_unused2) {
console.log(_unused);
}
```
Should be merged after #2829, Tried a few times to get it done with
graphite stacking but found no success. I guess it either doesn't work
with forks or It is just a skill issue since I'm not familiar with it.
closes: #2829closes: #2830
---------
Co-authored-by: Dmytro Maretskyi <maretskii@gmail.com>
Change the `profile.dev.debug` value from `limited` to `1` which is the
same thing according to
[this](https://doc.rust-lang.org/cargo/reference/profiles.html#debug).
For some reason, the numeric value was failing when running the codspeed
benchmark.
------
#### Edit:
it was resulting in the following error:
```
failed to parse manifest at `/home/runner/work/oxc/oxc/Cargo.toml`
```
Related to #2812
* move `visit` and `visit_mut` modules to a super module called `visit`
* add `walk_mut` module containing walk functions
* update `enter_node` and `leave_node` events to not pass a reference in the `VisitMut` trait
* add `AstType`, a non-referencing version of `AstKind` to use with `VisitMut` trait
* update the `VisitMut` trait's usages.