Commit graph

6594 commits

Author SHA1 Message Date
overlookmotel
fdd480d84c refactor(parser): do not use AstBuilder::*_from_* methods (#7068)
Preparation for #7073. Avoid using `AstBuilder::*_from_*` methods to construct enums, use explicit construction instead.

Before:

```rs
let ident = self.ast.binding_pattern_kind_from_binding_identifier(ident);
```

After:

```rs
let ident = BindingPatternKind::BindingIdentifier(ident);
```

Often this produces shorter code, as well as (in my opinion) being easier to read.
2024-11-02 01:22:55 +00:00
overlookmotel
32b4a53692 refactor(ast_tools): remove LateCtx abstraction (#7083)
`LateCtx` is just a wrapper around `Schema`. Remove it and use `Schema` instead.
2024-11-01 22:31:03 +00:00
overlookmotel
2eb9aa9b89 refactor(ast_tools): remove dead code (#7080) 2024-11-01 21:59:28 +00:00
overlookmotel
d89fe2c326 refactor(ast_tools): shorten code (#7079)
Shorten code by importing `rust_ast::Module` at top level.
2024-11-01 21:51:29 +00:00
overlookmotel
00cc156fb5 refactor(ast_tools): simplify module loading (#7078)
Rename var for clarity and remove unnecessary `From` impl.
2024-11-01 21:51:29 +00:00
overlookmotel
f2d10683a8 refactor(ast_tools): remove dead code (#7077) 2024-11-01 21:42:14 +00:00
overlookmotel
248ff18ddd refactor(ast_tools): output progress (#7076)
Flush `stdout` after writing progress.
2024-11-01 21:26:45 +00:00
overlookmotel
9e85b104e2 refactor(parser): add ParserImpl::alloc method (#7063)
Pure refactor. Introduce `ParserImpl::alloc` method. Shorten `self.ast.alloc(...)` to `self.alloc(...)`.

Also reduce `alloc` calls by using `AstBuilder` methods which already allocate where possible.
2024-11-01 17:09:06 +00:00
overlookmotel
9d384ad6db refactor(transformer): use identifier_reference_with_reference_id builder method (#7056)
Similar to #7055.

In transformer, use `AstBuilder::identifier_reference_with_reference_id` function, instead of creating an `IdentifierReference` and then setting the `reference_id` on it afterwards.
2024-11-01 17:09:05 +00:00
overlookmotel
4688a061ae refactor(transformer): use *_with_scope_id builder methods where possible (#7055)
In transformer, use `AstBuilder::function_with_scope_id` and `AstBuilder::arrow_function_expression_with_scope_id` function where possible, rather than creating a function and then setting the `scope_id` on it afterwards.
2024-11-01 17:09:04 +00:00
Boshen
ee27b92465 feat(codegen): print eof legal comments (#7058)
part of https://github.com/oxc-project/oxc/issues/7050
2024-11-01 16:56:57 +00:00
Boshen
6516f9eabc feat(codegen): print inline legal comments (#7054)
part of https://github.com/oxc-project/oxc/issues/7050
2024-11-01 16:56:56 +00:00
overlookmotel
7122e0074b refactor(transformer): use ctx.alloc over ctx.ast.alloc where possible (#7066)
Pure refactor. Just shorten code a little.
2024-11-01 16:51:20 +00:00
overlookmotel
b0211a1f9e refactor(ast): StaticMemberExpression::get_first_object use loop instead of recursion (#7065)
Follow-on after #6969. Pure refactor. Loops are generally cheaper than recursion.
2024-11-01 16:36:25 +00:00
renovate[bot]
4012e6ba0c
chore(deps): update crate-ci/typos action to v1.27.0 (#7061) 2024-11-01 23:46:54 +08:00
Dunqing
a2244ff089 fix(transformer/async-to-generator): output is incorrect when arrow function without params (#7052) 2024-11-01 15:35:57 +00:00
Boshen
e86bbad243
build: node v22.11.0 (#7062) 2024-11-01 23:31:55 +08:00
Boshen
0bb1aa4c64 refactor(codegen): move options to its own file (#7053) 2024-11-01 09:28:59 +00:00
Boshen
7f1d1fe065 refactor(transform): deserialize BabelPreests::env directly (#7051) 2024-11-01 08:09:59 +00:00
Boshen
a3b68b4224 refactor(transformer): flatten dir structure of options/babel/env (#7049) 2024-11-01 07:46:28 +00:00
Boshen
6d92f36ef2 refactor(transformer): deserialize BabelOptions::compiler_assumptions (#7048) 2024-11-01 07:41:01 +00:00
Boshen
f83a760d8a refactor(transformer): deserialize BabelOptions::presets (#7047) 2024-11-01 06:56:27 +00:00
Boshen
52c20d633c refactor(transformer): deserialize BabelOptions::plugins (#7045) 2024-11-01 05:44:57 +00:00
Boshen
4bef99c80b
chore(coverage): update runtime snapshot 2024-11-01 13:05:42 +08:00
tomoya yanagibashi
0601271b2c
fix(ast): Fix StaticMemberExpression.get_first_object (#6969)
I think `get_first_object` does not return expected expression.

For example, in case of `foo.bar.a`, it doesn't return `foo` but
`foo.bar`.

**Expected**
```
{
  "type": "Identifier",
  "start": 0,
  "end": 3,
  "name": "foo"
}
```

**Actual**
```
{
   "type":"StaticMemberExpression",
   "start":0,
   "end":7,
   "object":{
      "type":"Identifier",
      "start":0,
      "end":3,
      "name":"foo"
   },
   "property":{
      "type":"Identifier",
      "start":4,
      "end":7,
      "name":"bar"
   },
   "optional":false
}
```

---------

Co-authored-by: Dunqing <dengqing0821@gmail.com>
2024-11-01 12:28:48 +08:00
overlookmotel
e23f7e6bc1 refactor(transformer/common): VarDeclarations insert either var or let statements (#7043)
Add ability for `VarDeclarations` to insert `let` declarations as well as `var` declarations. This is required for class properties transform.

Implementation note: `var` and `let` declarators are stored in 2 separate `ArenaVec`s. This allows using those `ArenaVec<Declarator<'a>>`s directly in the AST, rather storing all `Declarator`s in a single `Vec` and having to loop through it when inserting the `var` / `let` statements to split it into 2 `ArenaVec`s of `var` / `let` declarators. I'm not completely sure this is better than using a single `Vec` for both, but I think *probably* it is.
2024-11-01 04:08:59 +00:00
camchenry
1f2a6c666f feat(linter)!: report unmatched rules with error exit code (#7027)
- closes https://github.com/oxc-project/oxc/issues/6988

we now return an error exit code when there are unmatched rules. previously, we would print an error to stderr and continue running. however, this masked errors in some tests that actually had unmatched rules in them. these test cases now trigger a panic (in tests only, not at runtime), and help ensure that we are reporting an error message to the user for unknown rules, which we did not have any tests cases for before.

- fixes https://github.com/oxc-project/oxc/issues/7025

this also fixes https://github.com/oxc-project/oxc/issues/7025, where we were reporting rules as unmatched simply because they had been disabled prior to being configured. similar to https://github.com/oxc-project/oxc/issues/7009.
2024-11-01 03:27:25 +00:00
overlookmotel
86ab091e42 style(transformer/common): Split up StatementInjectorStore methods into blocks (#7042)
Pure refactor. Split up the `impl`s into multiple blocks with comments for each block, to make it clearer.
2024-10-31 19:23:28 +00:00
Boshen
fcaba4a92a feat(transformer): add TransformerOptions::env with EnvOptions (#7037) 2024-10-31 12:30:32 +00:00
Boshen
e921df6199 refactor(transformer): rename EnvOptions to BabelEnvOptions (#7036) 2024-10-31 10:00:52 +00:00
overlookmotel
1d906c64e7 feat(transformer): class properties transform skeleton (#7038)
Skeleton of class properties transform. #7011 contains WIP implementation.
2024-10-31 09:55:41 +00:00
Dunqing
934cb5e746 feat(transformer): add async_generator_functions plugin (#6573)
Passed 15/19 tests. The remaining 4 failed tests related to `this` expression, the problem same as I mentioned in #6658. I will fix them in follow-up PRs.
2024-10-31 09:14:17 +00:00
Boshen
af5140fc3d refactor(transformer): isolate babel options logic (#7034) 2024-10-31 08:04:52 +00:00
Boshen
12aa910508 refactor(transformer): clean up env/targets/query.rs (#7033) 2024-10-31 03:30:08 +00:00
overlookmotel
2a57a66753 test(transformer): support exec tests in Oxc folder (#7030)
Fix error when `tasks/transform_conformance/tests` contains exec tests.
2024-10-31 01:18:09 +00:00
Boshen
3d174bb953 refactor(transformer): clean up BabelOptions (#7029)
part of #6982
2024-10-30 17:14:18 +00:00
Boshen
6284f84f58 refactor(transformer): use Browserslist::Version (#7028) 2024-10-30 14:32:50 +00:00
Boshen
76947e2aec refactor(transform): refactor Babel Targets (#7026)
Found a trick from serde to get us from `BabelTargets` to `Targets`.
2024-10-30 14:08:19 +00:00
overlookmotel
b02114783a refactor(data_structures): make all methods of NonNull shim #[inline(always)] (#7024)
All these methods are trivial and should always be inlined.
2024-10-30 13:00:24 +00:00
overlookmotel
fb1710a8cc refactor(data_structures): add #[repr(transparent)] to NonNull shim (#7023)
Ensure `NonNull` shim is a pure wrapper around `std::ptr::NonNull`. This should be the case anyway, but make sure.
2024-10-30 13:00:22 +00:00
overlookmotel
f1fc8db2fb refactor(data_structures): add read method to NonNull shim (#7022)
Emulate [`NonNull::read`](https://doc.rust-lang.org/beta/std/ptr/struct.NonNull.html#method.read) method in `NonNull` shim. This is more ergonomic, and will be ideal usage once our MSRV reaches 1.80.0 and we can remove the shim.
2024-10-30 13:00:22 +00:00
overlookmotel
c58ec89b81 perf(data_structures): optimize NonEmptyStack::pop (#7021)
Shave a few bytes off `NonEmptyStack::pop`.
2024-10-30 13:00:21 +00:00
Boshen
b8daab3663 refactor(transformer)!: API to TryFrom<&EnvOptions> for TransformOptions and TryFrom<&BabelOptions> TransformOptions (#7020)
…ions` and `TryFrom<&BabelOptions> TransformOptions`
2024-10-30 09:40:09 +00:00
Boshen
17a938ee1f
refactor(parser): use function parse_type_member_semicolon (#7018) 2024-10-30 17:20:03 +08:00
Boshen
aa1b29c0cf
refactor(parser): remove parse_ts_index_signature_member function (#7017) 2024-10-30 17:20:02 +08:00
Boshen
5b11cdf611 refactor(transformer): clean up TransformerOptions (#7005)
This is a work towards https://github.com/oxc-project/oxc/issues/6982

Next PR will try and make sense of env options vs babel options vs targets and bugfixes, I'm super confused right now.
2024-10-30 09:09:38 +00:00
Boshen
caaf00e081 fix(parser): fix incorrect parsed TSIndexSignature (#7016)
closes #6985
2024-10-30 07:34:22 +00:00
Boshen
a786dc2449
chore(.ignore): ignore snapshots 2024-10-30 13:30:19 +08:00
Boshen
0ae4cd6630
chore(justfile): improve watch command 2024-10-30 11:51:31 +08:00
ottomated
854870e296 feat(ast): Label AST fields with #[ts] (#6987)
I think I found all of the AST fields that are typescript-only but I could be wrong. I did label decorators as `#[ts]` but not sure if that's correct.
2024-10-30 03:44:05 +00:00