<!---
Thank you for contributing to Boa! Please fill out the template below, and remove or add any
information as you feel necessary.
--->
This Pull Request is related to #2098.
It changes the following:
- Implements `JsRegExp`
- Adds a brief `JsRegExp` example under `boa_examples`
This Pull Request fixes/closes #2330.
It changes the following:
- Upgrades from clap 3 to clap 4 (note that criterion still uses clap 3, tracked here: https://github.com/bheisler/criterion.rs/issues/596)
- Updates the derive syntax with the new 4.0 syntax
- Adds hints for fish & zsh
Co-authored-by: José Julián Espina <jedel0124@gmail.com>
I think it's time to address the elephant in the room.
This Pull Request will (hopefully!) solve part of #736.
This is a complete rewrite of `JsString`, but instead of storing `u8` bytes it stores `u16` words. The `encode!` macro (renamed to `utf16!` for simplicity) from the `const-utf16` crate allows us to create UTF-16 encoded arrays at compilation time. `JsString` implements `Deref<Target=[u16]>` to unlock the slice methods and possibly make some manipulations easier. However, we would need to create our own library of utilities for `JsString`.
Bumps [test262](https://github.com/tc39/test262) from `58b7a23` to `eb67a76`.
<details>
<summary>Commits</summary>
<ul>
<li><a href="eb67a7689f"><code>eb67a76</code></a> Temporal: Add tests for observable operations in MoveRelativeDate</li>
<li><a href="ae52931aae"><code>ae52931</code></a> Temporal: Add TemporalHelpers.calendarObserver</li>
<li><a href="12f919e45d"><code>12f919e</code></a> Temporal: Add TemporalHelpers.timeZoneObserver</li>
<li><a href="534b94eb63"><code>534b94e</code></a> Temporal: Add tests for calendar validation normative change</li>
<li><a href="b83af50771"><code>b83af50</code></a> Temporal: Adapt existing custom calendar getter tests, and expand</li>
<li><a href="89116e95dd"><code>89116e9</code></a> Temporal: Add some assertion messages to help with debugging</li>
<li><a href="e292fb80de"><code>e292fb8</code></a> Import SpiderMonkey Temporal tests</li>
<li><a href="46c3823117"><code>46c3823</code></a> Temporal: Add TemporalHelpers.crossDateLineTimeZone</li>
<li><a href="886f091bd3"><code>886f091</code></a> Temporal: Use TemporalHelpers.springForwardFallBackTimeZone in staging</li>
<li><a href="42074e7fe7"><code>42074e7</code></a> Temporal: Remove calendars and time zones from tests in staging</li>
<li>See full diff in <a href="58b7a23582...eb67a7689f">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 ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
This Pull Request closes#2080.
It moves all implementors of the `JsObjectType` trait into their own `js_object` module.
This should simplify documentation and by doing a `pub(crate)` export in `object` little to no imports within the crate need to be changed, simplifying the usage of this module within the boa_engine crate.
Documentation within the `object` module has been updated to reflect this change and in a way that it is shown on the home page of the documentation.
Bumps [test262](https://github.com/tc39/test262) from `e849d40` to `58b7a23`.
<details>
<summary>Commits</summary>
<ul>
<li><a href="58b7a23582"><code>58b7a23</code></a> Sync to intl-duration-format PR 119</li>
<li><a href="c44b6e3e76"><code>c44b6e3</code></a> Temporal: Add assertion messages to PlainTime/p/{add,subtract}/argument-objec...</li>
<li><a href="eaf85892fb"><code>eaf8589</code></a> Import SpiderMonkey Temporal tests</li>
<li>See full diff in <a href="e849d40605...58b7a23582">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 ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
<!---
Thank you for contributing to Boa! Please fill out the template below, and remove or add any
information as you feel necessary.
--->
This Pull Request is related to #2098 .
It changes the following:
- Implements a wrapper for `DataView`
- Adds an example of `JsDataView` to the `JsArrayBuffer` example file under boa_examples
Co-authored-by: jedel1043 <jedel0124@gmail.com>
Bumps [test262](https://github.com/tc39/test262) from `9215420` to `e849d40`.
<details>
<summary>Commits</summary>
<ul>
<li><a href="e849d40605"><code>e849d40</code></a> CI: Update CircleCI Docker images.</li>
<li><a href="8565eea8be"><code>8565eea</code></a> Temporal: Test tiebreaker rounding modes more thoroughly</li>
<li><a href="c84e5701cd"><code>c84e570</code></a> Temporal: Add tests for new rounding modes</li>
<li><a href="4155842c37"><code>4155842</code></a> Temporal: Regularize and expand tests for round() rounding modes</li>
<li><a href="a788188c2f"><code>a788188</code></a> Temporal: Regularize and expand tests for difference rounding modes</li>
<li><a href="9c4aed29b7"><code>9c4aed2</code></a> Temporal: Remove now-valid rounding modes from roundingmode-invalid-string tests</li>
<li><a href="e79a1935ed"><code>e79a193</code></a> Add tests for Unicode v15 Identifier{Start,Part} (<a href="https://github-redirect.dependabot.com/tc39/test262/issues/3662">#3662</a>)</li>
<li><a href="3eaa7c9313"><code>3eaa7c9</code></a> Update RegExp <code>\p{…}</code> tests per Unicode 15</li>
<li><a href="ef59ea225a"><code>ef59ea2</code></a> Temporal: Add TemporalHelpers.propertyBagObserver()</li>
<li><a href="38dd3c2823"><code>38dd3c2</code></a> Temporal: Consistently format property names in call logs</li>
<li>Additional commits viewable in <a href="9215420dee...e849d40605">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 ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
This Pull Request switches our codebase to the brand new [workspace inherited keys](https://doc.rust-lang.org/cargo/reference/workspaces.html#the-package-table), which allows us to define common package options that are usable within each crate's Cargo.toml file.
It also allows to share dependency versions between crates, but I defined only shared versions for our workspace members. It would be a good follow-up to lift all the shared dependencies between crates into the global Cargo.toml.
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.144 to 1.0.145.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/serde-rs/serde/releases">serde's releases</a>.</em></p>
<blockquote>
<h2>v1.0.145</h2>
<ul>
<li>Allow RefCell<T>, Mutex<T>, and RwLock<T> to be serialized regardless of whether T is <code>Sized</code> (<a href="https://github-redirect.dependabot.com/serde-rs/serde/issues/2282">#2282</a>, thanks <a href="https://github.com/ChayimFriedman2"><code>@ChayimFriedman2</code></a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="8c036ee5a3"><code>8c036ee</code></a> Release 1.0.145</li>
<li><a href="d99009f3c6"><code>d99009f</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/serde-rs/serde/issues/2282">#2282</a> from ChayimFriedman2/sized-mutex-refcell-rwlock</li>
<li><a href="be3c37eb8b"><code>be3c37e</code></a> Serialize unsized <code>RefCell</code>, <code>Mutex</code> and <code>RwLock</code></li>
<li><a href="f0346ae054"><code>f0346ae</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/serde-rs/serde/issues/2281">#2281</a> from dtolnay/try</li>
<li><a href="fa6ce42056"><code>fa6ce42</code></a> Redefine 'try' macro to omit From::from error conversion</li>
<li><a href="a9320db6f9"><code>a9320db</code></a> Consistently avoid '?' throughout serde crate</li>
<li><a href="d208762c81"><code>d208762</code></a> Command-line ignore let_underscore_drop clippy lint</li>
<li><a href="5386897d24"><code>5386897</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/serde-rs/serde/issues/2273">#2273</a> from sashashura/patch-1</li>
<li><a href="68eb59df0c"><code>68eb59d</code></a> Update ci.yml</li>
<li><a href="a7f4551669"><code>a7f4551</code></a> Add dev-dependencies keyword for serde_test</li>
<li>See full diff in <a href="https://github.com/serde-rs/serde/compare/v1.0.144...v1.0.145">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde&package-manager=cargo&previous-version=1.0.144&new-version=1.0.145)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
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 ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
This Pull Request overrides #2288.
It changes the following:
- Updates dependencies to use Unicode 15
- Updates the boa_unicode crate to use Unicode 15
It's still waiting on the unicode-general-category 0.6 release, which was tagged 3 days ago: 15e7e3182f
Bumps [once_cell](https://github.com/matklad/once_cell) from 1.14.0 to 1.15.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/matklad/once_cell/blob/master/CHANGELOG.md">once_cell's changelog</a>.</em></p>
<blockquote>
<h2>1.15.0</h2>
<ul>
<li>Increase minimal supported Rust version to 1.56.0.</li>
<li>Implement <code>UnwindSafe</code> even if the <code>std</code> feature is disabled.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="97edd07e0a"><code>97edd07</code></a> Merge <a href="https://github-redirect.dependabot.com/matklad/once_cell/issues/200">#200</a></li>
<li><a href="f5264bbaf1"><code>f5264bb</code></a> release 1.15.0</li>
<li><a href="a0aeb9b378"><code>a0aeb9b</code></a> Merge <a href="https://github-redirect.dependabot.com/matklad/once_cell/issues/199">#199</a></li>
<li><a href="1d8a90d231"><code>1d8a90d</code></a> fix token name</li>
<li><a href="5ca60af311"><code>5ca60af</code></a> Merge <a href="https://github-redirect.dependabot.com/matklad/once_cell/issues/198">#198</a></li>
<li><a href="99c67b7906"><code>99c67b7</code></a> 1.15.0</li>
<li><a href="b68bee9c56"><code>b68bee9</code></a> edition 2021</li>
<li><a href="8e47e43a49"><code>8e47e43</code></a> always implement unwind safe</li>
<li><a href="8ec240e9db"><code>8ec240e</code></a> MSRV is 1.56</li>
<li><a href="2487d34593"><code>2487d34</code></a> Merge <a href="https://github-redirect.dependabot.com/matklad/once_cell/issues/197">#197</a></li>
<li>Additional commits viewable in <a href="https://github.com/matklad/once_cell/compare/v1.14.0...v1.15.0">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=once_cell&package-manager=cargo&previous-version=1.14.0&new-version=1.15.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
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 ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
Bumps [test262](https://github.com/tc39/test262) from `dc1dc28` to `9215420`.
<details>
<summary>Commits</summary>
<ul>
<li><a href="9215420dee"><code>9215420</code></a> Fix limit test</li>
<li><a href="58a9cdc426"><code>58a9cdc</code></a> Temporal: Test new limits for user code return from getOffsetNanosecondsFor</li>
<li><a href="31ad95d34e"><code>31ad95d</code></a> Temporal: Add more getOffsetNanosecondsFor validation tests</li>
<li><a href="65b51e0769"><code>65b51e0</code></a> Temporal: Override getPossibleInstantsFor to narrow down exception</li>
<li><a href="aa3afd1c28"><code>aa3afd1</code></a> Remove "15Z" to for PlainTime.from test</li>
<li><a href="ce2061eccd"><code>ce2061e</code></a> Temporal: Adjust order of operations in Calendar.___fromFields</li>
<li><a href="4569e73420"><code>4569e73</code></a> Fix DurationFormat default tests (<a href="https://github-redirect.dependabot.com/tc39/test262/issues/3640">#3640</a>)</li>
<li><a href="03cff7fcba"><code>03cff7f</code></a> Remove undefined to sync to PR 113</li>
<li><a href="8f19bb4a45"><code>8f19bb4</code></a> Fix features in tests from <a href="https://github-redirect.dependabot.com/tc39/test262/issues/3354">#3354</a> and <a href="https://github-redirect.dependabot.com/tc39/test262/issues/3353">#3353</a></li>
<li><a href="9592077530"><code>9592077</code></a> Update groupToMap tests</li>
<li>Additional commits viewable in <a href="dc1dc28aa4...9215420dee">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 ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
Bumps [clap](https://github.com/clap-rs/clap) from 3.2.21 to 3.2.22.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/clap-rs/clap/releases">clap's releases</a>.</em></p>
<blockquote>
<h2>v3.2.22</h2>
<h2>[3.2.22] - 2022-09-16</h2>
<h3>Fixes</h3>
<ul>
<li>Unify dependencies on <code>terminal_size</code> to the 0.2 release</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/clap-rs/clap/blob/v3.2.22/CHANGELOG.md">clap's changelog</a>.</em></p>
<blockquote>
<h2>[3.2.22] - 2022-09-16</h2>
<h3>Fixes</h3>
<ul>
<li>Unify dependencies on <code>terminal_size</code> to the 0.2 release</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="9e3fa67e04"><code>9e3fa67</code></a> chore: Release</li>
<li><a href="d188de0535"><code>d188de0</code></a> docs: Update changelog</li>
<li><a href="48b2373569"><code>48b2373</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/4221">#4221</a> from niyaznigmatullin/bump_terminal_size</li>
<li><a href="2fd55076e6"><code>2fd5507</code></a> chore(deps): Bump terminal_size and textwrap</li>
<li>See full diff in <a href="https://github.com/clap-rs/clap/compare/v3.2.21...v3.2.22">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=clap&package-manager=cargo&previous-version=3.2.21&new-version=3.2.22)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
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 ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
This Pull Request fixes/closes #1987.
It changes the following:
- Add a prototype to the global object.
- Implement `__get_prototype_of__`, `__set_prototype_of__`, `__get_own_property__`, and `__own_property_keys__` for the global object
<!---
Thank you for contributing to Boa! Please fill out the template below, and remove or add any
information as you feel neccesary.
--->
This Pull Request fixes [x-after-break-to-label](dc1dc28aa4/test/language/block-scope/leave/x-after-break-to-label.js)
### Example
```js
{
let x = 2;
L: {
let x = 3;
console.log(x === 3);
break L;
console.log(false);
}
console.log(x === 2);
}
```
### Previously
> Uncaught "SyntaxError": "Cannot use the undeclared label 'L'"
### Now
> true <br> true
### What did I do
1. add `lable` to `Node::Block`
2. push labelled-block's `control info` to `jump_info` list
3. pop it before `Opcode::PopEnvironment`
Co-authored-by: creampnx_x <2270436024@qq.com>
This Pull Request closes#894.
It changes the following:
- Adds the `encodeURI()`, `decodeURI()`, `encodeURIComponent()` and `decodeURIComponent()` functions
- Passes all the tests except for those depending on #1987 or on the comment below.
Things to discuss:
- I'm unable to find in the spec information regarding the only failing tests, which relate to [this](f1870753fa/test/built-ins/encodeURI/S15.1.3.3_A1.1_T2.js):
> If string.charAt(k) in [0xDC00 - 0xDFFF], throw URIError
Let me know your thoughts :)
Co-authored-by: raskad <32105367+raskad@users.noreply.github.com>
This Pull Request changes the following:
- Implement [Async-from-Sync Iterator Objects](https://tc39.es/ecma262/#sec-async-from-sync-iterator-objects)
- Give the proper `async` hint to `GetIterator` when executing a delegate yield expression in an async generator function
This Pull Request fixes/closes #2148.
It changes the following:
- When we start an assignment expression, the `/` token must be a regular expression literal. The division can only occur between expressions after the assignment operator.
- Added tests for the new behaviour, taken from #2177
This overrides #2177
This Pull Request fixes a potential overflow when trying to convert a `u64` into a `usize` and then trying to create a byte data block.
Related to this, we seem to be using a `u64` and `i64` as a general approach for an "integer", but ECMAScript doesn't have bounds for them, so they could be as big as infinite. Should we use `u128` and `i128` to have a bigger range?
This would add a performance penalty, though, and we don't have 128-bit platforms usually, so the benefit would probably be minimal, at least when trying to allocate.
Bumps [serde_yaml](https://github.com/dtolnay/serde-yaml) from 0.9.11 to 0.9.13.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/dtolnay/serde-yaml/releases">serde_yaml's releases</a>.</em></p>
<blockquote>
<h2>0.9.13</h2>
<ul>
<li>Recognize <code>True</code>, <code>TRUE</code>, <code>False</code>, <code>FALSE</code> as booleans, <code>Null</code>, <code>NULL</code> as null (<a href="https://github-redirect.dependabot.com/dtolnay/serde-yaml/issues/330">#330</a>)</li>
</ul>
<h2>0.9.12</h2>
<ul>
<li>
<p>Support deserializing tagged literal scalar into primitive (<a href="https://github-redirect.dependabot.com/dtolnay/serde-yaml/issues/327">#327</a>)</p>
<pre lang="yaml"><code>"foo": !!int |-
7200
</code></pre>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="186cc67720"><code>186cc67</code></a> Release 0.9.13</li>
<li><a href="43615b14bf"><code>43615b1</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/dtolnay/serde-yaml/issues/330">#330</a> from dtolnay/tagresolution</li>
<li><a href="35037c5e7f"><code>35037c5</code></a> Add some null and boolean representations</li>
<li><a href="a7b9862f5a"><code>a7b9862</code></a> Add a core schema tag resolution test</li>
<li><a href="161f60c18c"><code>161f60c</code></a> Add a sponsors link</li>
<li><a href="7687acb2f4"><code>7687acb</code></a> Remove default package.readme metadata from Cargo.toml</li>
<li><a href="03da8cffc1"><code>03da8cf</code></a> Release 0.9.12</li>
<li><a href="129a24e710"><code>129a24e</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/dtolnay/serde-yaml/issues/328">#328</a> from dtolnay/taggedliteral</li>
<li><a href="c68127fad5"><code>c68127f</code></a> Clean up tagged literal matching</li>
<li><a href="bfff6c193f"><code>bfff6c1</code></a> Support deserializing tagged literal scalar into primitive</li>
<li>Additional commits viewable in <a href="https://github.com/dtolnay/serde-yaml/compare/0.9.11...0.9.13">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde_yaml&package-manager=cargo&previous-version=0.9.11&new-version=0.9.13)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
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 ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.64 to 1.0.65.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/dtolnay/anyhow/releases">anyhow's releases</a>.</em></p>
<blockquote>
<h2>1.0.65</h2>
<ul>
<li><!-- raw HTML omitted -->impl <!-- raw HTML omitted -->Provider<!-- raw HTML omitted --> for anyhow::Error<!-- raw HTML omitted --></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="4de2068f71"><code>4de2068</code></a> Release 1.0.65</li>
<li><a href="07acdacfea"><code>07acdac</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/dtolnay/anyhow/issues/271">#271</a> from dtolnay/provider</li>
<li><a href="ee49ec0d49"><code>ee49ec0</code></a> Add impl Provider in build.rs probe</li>
<li><a href="b7448d3ad6"><code>b7448d3</code></a> impl std::any::Provider for anyhow::Error</li>
<li>See full diff in <a href="https://github.com/dtolnay/anyhow/compare/1.0.64...1.0.65">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=anyhow&package-manager=cargo&previous-version=1.0.64&new-version=1.0.65)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
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 ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
Bumps [clap](https://github.com/clap-rs/clap) from 3.2.20 to 3.2.21.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/clap-rs/clap/releases">clap's releases</a>.</em></p>
<blockquote>
<h2>v3.2.21</h2>
<h2>[3.2.21] - 2022-09-12</h2>
<h3>Features</h3>
<ul>
<li><code>TypedValueParser::map</code> to allow reusing existing value parsers for other purposes</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/clap-rs/clap/blob/v3.2.21/CHANGELOG.md">clap's changelog</a>.</em></p>
<blockquote>
<h2>[3.2.21] - 2022-09-12</h2>
<h3>Features</h3>
<ul>
<li><code>TypedValueParser::map</code> to allow reusing existing value parsers for other purposes</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="7de2f36e6b"><code>7de2f36</code></a> chore: Release</li>
<li><a href="af47562311"><code>af47562</code></a> docs: Roll back deprecation message</li>
<li><a href="1f053b9c9b"><code>1f053b9</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/4205">#4205</a> from epage/deprecations</li>
<li><a href="d1ff0632ad"><code>d1ff063</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/4204">#4204</a> from epage/map</li>
<li><a href="7272aa0950"><code>7272aa0</code></a> docs: Expand on deprecation instructions</li>
<li><a href="960c152b53"><code>960c152</code></a> feat(parser): TypedValueParseer::map for adapting value parsers</li>
<li><a href="c361d01ad5"><code>c361d01</code></a> docs: Remove v4 from changelog</li>
<li>See full diff in <a href="https://github.com/clap-rs/clap/compare/v3.2.20...v3.2.21">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=clap&package-manager=cargo&previous-version=3.2.20&new-version=3.2.21)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
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 ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
Updates the requirements on [criterion](https://github.com/bheisler/criterion.rs) to permit the latest version.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/bheisler/criterion.rs/blob/master/CHANGELOG.md">criterion's changelog</a>.</em></p>
<blockquote>
<h2>[0.4.0] - 2022-09-10</h2>
<h3>Removed</h3>
<ul>
<li>The <code>Criterion::can_plot</code> function has been removed.</li>
<li>The <code>Criterion::bench_function_over_inputs</code> function has been removed.</li>
<li>The <code>Criterion::bench_functions</code> function has been removed.</li>
<li>The <code>Criterion::bench</code> function has been removed.</li>
</ul>
<h3>Changed</h3>
<ul>
<li>HTML report hidden behind non-default feature flag: 'html_reports'</li>
<li>Standalone support (ie without cargo-criterion) feature flag: 'cargo_bench_support'</li>
<li>MSRV bumped to 1.57</li>
<li><code>rayon</code> and <code>plotters</code> are optional (and default) dependencies.</li>
<li>Status messages ('warming up', 'analyzing', etc) are printed to stderr, benchmark results are printed to stdout.</li>
<li>Accept subsecond durations for <code>--warm-up-time</code>, <code>--measurement-time</code> and <code>--profile-time</code>.</li>
<li>Replaced serde_cbor with ciborium because the former is no longer maintained.</li>
<li>Upgrade clap to v3 and regex to v1.5.</li>
</ul>
<h3>Added</h3>
<ul>
<li>A <code>--discard-baseline</code> flag for discarding rather than saving benchmark results.</li>
<li>Formal support for benchmarking code compiled to web-assembly.</li>
<li>A <code>--quiet</code> flag for printing just a single line per benchmark.</li>
<li>A <code>Throughput::BytesDecimal</code> option for measuring throughput in bytes but printing them using
decimal units like kilobytes instead of binary units like kibibytes.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>When using <code>bench_with_input</code>, the input parameter will now be passed through <code>black_box</code> before
passing it to the benchmark.</li>
</ul>
<h2>[0.3.6] - 2022-07-06</h2>
<h3>Changed</h3>
<ul>
<li>MSRV bumped to 1.49</li>
<li>Symbol for microseconds changed from ASCII 'us' to unicode 'µs'</li>
<li>Documentation fixes</li>
<li>Clippy fixes</li>
</ul>
<h2>[0.3.5] - 2021-07-26</h2>
<h3>Fixed</h3>
<ul>
<li>Corrected <code>Criterion.toml</code> in the book.</li>
<li>Corrected configuration typo in the book.</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Bump plotters dependency to always include a bug-fix.</li>
<li>MSRV bumped to 1.46.</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="5e27b692a4"><code>5e27b69</code></a> Merge branch 'version-0.4'</li>
<li><a href="4d6d69a9f5"><code>4d6d69a</code></a> Increment version numbers.</li>
<li><a href="935c6327e1"><code>935c632</code></a> Add Throughput::BytesDecimal. Fixes <a href="https://github-redirect.dependabot.com/bheisler/criterion.rs/issues/581">#581</a>.</li>
<li><a href="f82ce59d71"><code>f82ce59</code></a> Remove critcmp code (it belongs in cargo-criterion) (<a href="https://github-redirect.dependabot.com/bheisler/criterion.rs/issues/610">#610</a>)</li>
<li><a href="a18d0800a9"><code>a18d080</code></a> Merge branch 'master' into version-0.4</li>
<li><a href="f9c6b8d1c0"><code>f9c6b8d</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/bheisler/criterion.rs/issues/608">#608</a> from Cryptex-github/patch-1</li>
<li><a href="8d0224e9f1"><code>8d0224e</code></a> Fix html report path</li>
<li><a href="2934163518"><code>2934163</code></a> Add missing black_box for bench_with_input parameters. Fixes 566.</li>
<li><a href="dfd7b6532b"><code>dfd7b65</code></a> Add duplicated benchmark ID to assertion message.</li>
<li><a href="ce8259e69f"><code>ce8259e</code></a> Bump criterion-plot version number.</li>
<li>Additional commits viewable in <a href="https://github.com/bheisler/criterion.rs/compare/0.3.5...0.4.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 ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
This PR fixes a case where a forward slash is located in a regex class: `let regex = /[/]/;`. In this case, the forward slash should not close the regex literal.
This fixes `test/built-ins/RegExp/regexp-class-chars.js`
Bumps [test262](https://github.com/tc39/test262) from `f187075` to `dc1dc28`.
<details>
<summary>Commits</summary>
<ul>
<li><a href="dc1dc28aa4"><code>dc1dc28</code></a> Add tests for proposal-resizable-arraybuffer to staging</li>
<li><a href="746197355c"><code>7461973</code></a> Implement changes for "avoid mostly-redundant <code>await</code> in async <code>yield*</code>" (<a href="https://github-redirect.dependabot.com/tc39/test262/issues/3619">#3619</a>)</li>
<li>See full diff in <a href="f1870753fa...dc1dc28aa4">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 ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
<!---
Thank you for contributing to Boa! Please fill out the template below, and remove or add any
information as you feel neccesary.
--->
This Pull Request fixes: 79e3bc5176/test/language/computed-property-names/object/method/super.js
This PR solves the bug of using the `super` keyword in the method attribute of object. When the environment is `None`, the `vm` gets the top element of `vm.stack` as `this`, such as:
```js
var a = {
f() {
return super.m();
}
};
var b = {
m() {
retrun "super";
}
};
Object.setPrototypeOf(a, b);
a.f(); // the top of stack is `a`
let f = a.f;
f(); // the top of stack is `global_this`, so `super` cannot be used
```
### Can be improved
What I think is that when I use `object.method()`, the engine should bind `this_object` to the `environment`, instead of using `vm.stack.last()...`.
### TODOS
1. `super` need to look for properties all the way to the end.
Co-authored-by: creampnx_x <2270436024@qq.com>
This PR fixes#2275
There are keywords that are allowed as identifiers.
https://tc39.es/ecma262/#sec-keywords-and-reserved-words
> Those that are always allowed as identifiers, but also appear as keywords within certain syntactic productions, at places where Identifier is not allowed: as, async, from, get, meta, of, set, and target.
This PR adds test cases for them, and fixes some cases such as
`class A { set(a, b) { } }`
`function of() { }`
`let obj = {async: true}`
`async()`
There can be a line terminator in the middle of variable declaration statement. For example,
```js
var a
, b;
```
In this case, we should not insert semicolon automatically.
This fixes:
- test262/test/language/asi/S7.9_A7_T8.js
- test262/test/language/asi/S7.9_A7_T9.js