Official ECMAScript Conformance Test Suite
Go to file
Luis Fernando Pardo Sixtos 2020cfbe66 [decorators] Support private auto-accessors
Support for the accessor keywords for private class fields as part of
the decorators proposal.

Changes to AST:

- Add an AUTO_ACCESSOR value to the ClassLiteralProperty::Kind enum.
- Add an AutoAccessorInfo class to be used in ClassLiteralProperty
  objects of kind AUTO_ACCESSOR to hold the information about the
  generated getters/setters and backing storage.
- Add AutoAccessorGetterBody and AutoAccessorSetterBody statements to
  implement the logic of generated getters and setters.

Changes to Parser:
- Add logic to parse the "accessor" keyword and throw when used on non
  field class properties.
- Add preparser logic to mock the function scopes and variable
  declarations required for the generated getters/setters.
- Add parser logic to synthetically create statements for the
  generated setters/getters. 

Changes to the Bytecode Generator:
- Add logic to BuildClassLiteral to build auto accessor storage
  private names.
- Add logic to set the generated getters/setters in the accessor pair.
- Add logic to initialize the accessor storage in BuildClassProperty.
- Add AutoAccessorGetterBody and AutoAccessorSetterBody visitors.

Tests:
- Add parsing-unittests for parsing converage.
- Add test262 tests for functionality coverage.
- Add test-debug test for devtools support coverage.

Bug: 42202709
Change-Id: Ibb9bee3bbd0c09341108856f969e0c22bbb8b9cc
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5547688
Reviewed-by: Seth Brenith <seth.brenith@microsoft.com>
Commit-Queue: Luis Pardo <lpardosixtos@microsoft.com>
Reviewed-by: Shu-yu Guo <syg@chromium.org>
Cr-Commit-Position: refs/heads/main@{#95612}
2024-08-13 19:35:08 +02:00
.circleci Remove ChakraCore CI job 2024-04-02 11:14:32 +02:00
.github/workflows update es-meta version to v0.4.1 2024-05-18 12:33:09 +05:00
docs Correct typos 2023-02-15 09:04:26 -08:00
harness harness/asyncHelpers.js: Update throwsAsync to not succeed on a bad thenable 2024-08-02 08:52:05 +02:00
rfcs Update the location of `2nd-param-non-object.js` 2024-04-15 12:09:43 -07:00
src Compatibility with Hardened JavaScript (#4088) 2024-07-04 08:19:23 -07:00
test [decorators] Support private auto-accessors 2024-08-13 19:35:08 +02:00
tools Replace "imp" module with "importlib" in parseTestRecord 2023-11-15 09:15:47 -08:00
.editorconfig Add .case and .template files to .editorconfig 2022-02-16 09:56:59 -05:00
.gitattributes Import tests from Google V8 (templates) 2015-04-02 12:13:51 -04:00
.gitignore Atomics: fix typo "throwes" => "throws" 2018-06-26 14:51:45 -04:00
.hgignore Regenerated console runner files. Excluded generated test cases. 2012-08-26 20:47:30 -07:00
.npmrc Only apps should have lockfiles 2017-07-25 23:05:46 -07:00
CODEOWNERS Allow @tc39-staging to modify features.txt 2023-10-12 10:03:23 +02:00
CODE_OF_CONDUCT.md Add CoC.md reference file 2018-04-11 16:16:55 -04:00
CONTRIBUTING.md CONTRIBUTING.md: Improve asyncHelpers documentation 2024-08-01 11:38:06 -04:00
ECMA TR-104.pdf Update TR-104 with released version 2017-05-18 15:47:35 -04:00
INTERPRETING.md Add tests for Source Phase Imports (#3980) 2024-06-27 14:58:04 +02:00
LICENSE Update LICENSE (#4107) 2024-07-24 09:36:44 -07:00
README.md Fixed website section in README (#3981) 2024-01-09 10:48:12 +01:00
excludelist.xml Fix packager.py for updated locations 2014-12-09 14:52:12 -08:00
features.txt Add tests for RegExp.escape 2024-07-18 17:30:09 +02:00
github-deploy-key.enc Update deploy keys 2017-04-24 15:11:02 -04:00
lint.exceptions Fix lint.exceptions, I hope? 2020-03-02 13:38:35 -05:00
make.py Rename usage of master to main 2020-07-15 15:47:15 -04:00
package.json Bump esvu version 2022-12-01 15:16:40 +01:00

README.md

Test262: ECMAScript Test Suite (ECMA TR/104)

Test262 is the implementation conformance test suite for the latest drafts (or most recent published edition) of the following Ecma specifications:

Test262 itself is described in ECMA TR/104 and is included in ECMA-414 (pdf).

Goals & State of Test262

The goal of Test262 is to provide test material that covers every observable behavior specified in the ECMA-414 Standards Suite. Development of Test262 is an on-going process. As of October 2017, Test262 consisted of over 29272 individual test files covering the majority of the pseudo-code algorithms and grammar productions defined in the ECMA-414 Standards Suite. Each of these files contains one or more distinct test cases. This marks the most comprehensive ECMAScript test suite to date. While test coverage is broad, TC39 does not consider coverage to be complete and as with any software project there exists the possibility of omissions and errors. This project welcomes any contributions to Test262 that help make test coverage of existing features more comprehensive.

ECMAScript feature proposals

As defined in the TC39 Process, Stage 4 Entrance Criteria requires tests for new feature proposals to advance. Tests may be written by proposal champions, implementers, or any interested community member.

A proposal champion is someone that worked on the feature proposal and specification directly.

An implementer is someone that works on implementing the proposal into a JavaScript engine, parser, runtime or embedding.

A community member is you, and we welcome you to contribute! If you're having trouble getting started, or even just want to ask a question, feel free to open an issue.

Contributing to Test262

Guidance for contributing to Test262 can be found in CONTRIBUTING.md.

Authors of contributions from non-Ecma member organizations must sign the Test262 CLA

Running Test262

Guidance for running Test262 and explanations of how a test file must be interpreted by a test runner is in INTERPRETING

Rationale

This project offers an explanation for many of its design decisions and maintenance practices--see rationale.md.

Test262 Runners

Volunteer-maintained projects that may be used to execute Test262 in various ECMAScript hosts:

How To Read CI Results

Test262 runs CI tests against every PR and commit. The only tests that are required to pass are visibly flagged as REQUIRED. The CI test results that are attributed to specific runs against specific engines should not be perceived as meaningful to anyone but the person that is reviewing the test material contained within the contributed changeset. These tests are almost always expected to fail, especially in the case of tests for new features. They may be helpful in determining whether or not a regression occurred, but that can only be determined by an actual human reviewing the results and comparing those outcomes to the expected outcomes of the tests.

Where did website/ go?

It's been removed. If you need to access the code that contained in that directory, you can find it here.