Bumps the dependencies group with 4 updates:
[num-traits](https://github.com/rust-num/num-traits),
[proc-macro2](https://github.com/dtolnay/proc-macro2),
[syn](https://github.com/dtolnay/syn) and
[similar](https://github.com/mitsuhiko/similar).
Updates `num-traits` from 0.2.16 to 0.2.17
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/rust-num/num-traits/blob/master/RELEASES.md">num-traits's
changelog</a>.</em></p>
<blockquote>
<h1>Release 0.2.17 (2023-10-07)</h1>
<ul>
<li><a
href="https://redirect.github.com/rust-num/num-traits/pull/286">Fix a
doc warning about custom classes with newer rustdoc.</a></li>
</ul>
<p><strong>Contributors</strong>: <a
href="https://github.com/robamu"><code>@robamu</code></a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="0a27d8c95a"><code>0a27d8c</code></a>
Merge <a
href="https://redirect.github.com/rust-num/num-traits/issues/289">#289</a></li>
<li><a
href="34e309a918"><code>34e309a</code></a>
Release 0.2.17</li>
<li><a
href="ef36d69f7c"><code>ef36d69</code></a>
Merge <a
href="https://redirect.github.com/rust-num/num-traits/issues/286">#286</a></li>
<li><a
href="d9d94f8a51"><code>d9d94f8</code></a>
Bugfix for text codeblock in documentation.</li>
<li>See full diff in <a
href="https://github.com/rust-num/num-traits/compare/num-traits-0.2.16...num-traits-0.2.17">compare
view</a></li>
</ul>
</details>
<br />
Updates `proc-macro2` from 1.0.67 to 1.0.69
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/dtolnay/proc-macro2/releases">proc-macro2's
releases</a>.</em></p>
<blockquote>
<h2>1.0.69</h2>
<ul>
<li>Fix Span::source_text() bug causing panics or incorrect source text
(<a
href="https://redirect.github.com/dtolnay/proc-macro2/issues/410">#410</a>)</li>
</ul>
<h2>1.0.68</h2>
<ul>
<li>Fix panic in Span::source_text() when source contains multibyte
characters (<a
href="https://redirect.github.com/dtolnay/proc-macro2/issues/408">#408</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="937bbcdcc1"><code>937bbcd</code></a>
Release 1.0.69</li>
<li><a
href="42dc36efce"><code>42dc36e</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/proc-macro2/issues/412">#412</a>
from dtolnay/sourcetext</li>
<li><a
href="6461c2dd60"><code>6461c2d</code></a>
Add out-of-order call to source_text test</li>
<li><a
href="c4c3251c57"><code>c4c3251</code></a>
Explain source_text implementation approach</li>
<li><a
href="31b14c30f2"><code>31b14c3</code></a>
Cache byte offsets computed from a char index</li>
<li><a
href="0e154618a1"><code>0e15461</code></a>
Make FileInfo mut in source_text to allow amortization of char
indices</li>
<li><a
href="90b8e1eb01"><code>90b8e1e</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/proc-macro2/issues/411">#411</a>
from dtolnay/sourcetext</li>
<li><a
href="137ae0a341"><code>137ae0a</code></a>
Fix source_text treating span.lo as byte offset not char index</li>
<li><a
href="4c0bd28a61"><code>4c0bd28</code></a>
Add regression test for issue 410</li>
<li><a
href="12eddc03a4"><code>12eddc0</code></a>
Reword explanation of SourceMap initial value</li>
<li>Additional commits viewable in <a
href="https://github.com/dtolnay/proc-macro2/compare/1.0.67...1.0.69">compare
view</a></li>
</ul>
</details>
<br />
Updates `syn` from 2.0.37 to 2.0.38
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/dtolnay/syn/releases">syn's
releases</a>.</em></p>
<blockquote>
<h2>2.0.38</h2>
<ul>
<li>Fix <em>"method 'peek' has an incompatible type for
trait"</em> error when defining <code>bool</code> as a custom
keyword (<a
href="https://redirect.github.com/dtolnay/syn/issues/1518">#1518</a>,
thanks <a
href="https://github.com/Vanille-N"><code>@Vanille-N</code></a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="43632bfb6c"><code>43632bf</code></a>
Release 2.0.38</li>
<li><a
href="abd2c214b4"><code>abd2c21</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/syn/issues/1518">#1518</a>
from Vanille-N/master</li>
<li><a
href="6701e6077e"><code>6701e60</code></a>
Absolute path to <code>bool</code> in
<code>custom_punctuation.rs</code></li>
<li><a
href="7313d24239"><code>7313d24</code></a>
Resolve single_match_else pedantic clippy lint in code generator</li>
<li><a
href="67ab64f3c0"><code>67ab64f</code></a>
Include unexpected token in the test failure message</li>
<li><a
href="137ae33486"><code>137ae33</code></a>
Check no remaining token after the first literal</li>
<li><a
href="258e9e8a11"><code>258e9e8</code></a>
Ignore single_match_else pedantic clippy lint in test</li>
<li><a
href="92fd50ee8c"><code>92fd50e</code></a>
Test docs.rs documentation build in CI</li>
<li>See full diff in <a
href="https://github.com/dtolnay/syn/compare/2.0.37...2.0.38">compare
view</a></li>
</ul>
</details>
<br />
Updates `similar` from 2.2.1 to 2.3.0
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/mitsuhiko/similar/blob/main/CHANGELOG.md">similar's
changelog</a>.</em></p>
<blockquote>
<h2>2.3.0</h2>
<ul>
<li>Added support for <code>Change::value_ref</code> and
<code>Change::value_mut</code>.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="47f46257d4"><code>47f4625</code></a>
2.3.0</li>
<li><a
href="3319f77693"><code>3319f77</code></a>
Downgrade msrv lock file</li>
<li><a
href="d21e126057"><code>d21e126</code></a>
Use Cargo.lock.msrv</li>
<li><a
href="86f68a6394"><code>86f68a6</code></a>
Make clippy happy</li>
<li><a
href="e85ddb0d18"><code>e85ddb0</code></a>
Added value_ref and value_mut</li>
<li><a
href="de455873da"><code>de45587</code></a>
Spelling and grammar fixes (<a
href="https://redirect.github.com/mitsuhiko/similar/issues/49">#49</a>)</li>
<li><a
href="9f76d88c3d"><code>9f76d88</code></a>
fix some english things (<a
href="https://redirect.github.com/mitsuhiko/similar/issues/48">#48</a>)</li>
<li><a
href="e575b88ca1"><code>e575b88</code></a>
Update GitHub Actions CI (<a
href="https://redirect.github.com/mitsuhiko/similar/issues/47">#47</a>)</li>
<li><a
href="ae815d13ea"><code>ae815d1</code></a>
Remove mention of Hunt–McIlroy / Hunt–Szymanski</li>
<li>See full diff in <a
href="https://github.com/mitsuhiko/similar/compare/2.2.1...2.3.0">compare
view</a></li>
</ul>
</details>
<br />
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
closes#273closes#814
HIR is removed from this PR, with the minifier being commented out.
HIR is a wonderful idea for compiling to lower languages, but after
sitting on it for a few months I found that it only adds confusion and
uncertainties to both myself and future contributors.
It also adds too much burden to maintainers if we plan to support more
downstream tools.
1 AST is the only way.
Fold constant addition expressions. Handles string concatenation and
addition, both with implicit casting.
For example,
```ts
let x = 1 + 1
let y = "hello " + "world"
```
now becomes
```ts
let x = 2
let y = "hello world"
```
## Extra Goodies
- test(minifier): add `test_snapshot` helper to perform snapshot tests
with `insta`
- up(hir): implement `std::ops::Add` for `NumericValue`
- up(span): impl `TryFrom<Cow<'_, &str>>` for `Atom`
When initially written types were not in the symbol table. Now that
types are in the symbol table it makes sense given
```ts
type A = 1
type B = A
```
that you can get to the symbol id for for A from type B = A.
Please correct me if I'm wrong about how I implemented this. I also
verified that occurrence (I believe this is the correct word) behaves
how I would expect.
```ts
type RecursiveType = string | {[x: string]: RecursiveType}
```
Does populate a reference.
---------
Co-authored-by: Boshen <boshenc@gmail.com>
# 1. Support join('\n')
I'm trying to run `just new-rule no-unexpected-multiline`, It found
rulegen not support test code pieced together using `array.json("\n")`,
like
```js
{
code: [
"const x = aaaa<",
" test",
">/*",
"test",
"*/`foo`"
].join("\n")
}
```
I found this kind of code widely in the eslint codebase, so it will be
great if we can support this.

# 2. remove extra `,`
And I found when meet unsupported code, rulegen will generate an extra
`,`, so I added a filter at
45cf5fc3da/tasks/rulegen/src/main.rs (L363)
# 3. handle escape string
The escape `/` and trailing `/` in the javascript code will break
rulegen. example: `"\"abc\\\n(123)\""`
I made the following changes:
```diff
- test_code.replace('\n', "\n\t\t\t")
+ test_code.replace('\n', "\n\t\t\t").replace('\\', "\\\\").replace('\"', "\\\"")
```
For #634.
This PR prepares for the fix of #634, adding an option to formatter to
control whether to quote object properties. After this PR, the rulegen
script can use oxc-formatter to output JSON-like object literal.
The `Quote Props` option is from Prettier. For detail:
https://prettier.io/docs/en/options.html#quote-props
> Change when properties in objects are quoted.
> Valid options:
> "as-needed" - Only add quotes around object properties where required.
> "consistent" - If at least one property in an object requires quotes,
quote all properties.
> "preserve" - Respect the input use of quotes in object properties.
---------
Co-authored-by: Don Isaac <donald.isaac@gmail.com>