Commit graph

36 commits

Author SHA1 Message Date
overlookmotel
3858221f45 refactor(global): sort imports (#7883)
Pure refactor. Re-order imports for clarity:

1. `std`
2. External crates
3. `oxc_*` crates
4. Current crate `use crate::...`
5. Super `use super::...`
6. Local modules

This order is from "furthest away" to "closest". This makes it clearer to see what is coming from where.

`cargo +nightly fmt` (#7877) did a lot of the work, but unfortunately `rustfmt` does not have an option to (a) put workspace crates in a separate block from external crates and (b) move `mod` statements to after `use` statements.
2024-12-14 15:07:21 +00:00
Boshen
7fb9d47460 style(rust): cargo +nightly fmt (#7877) 2024-12-14 06:03:31 +00:00
Boshen
00fea9285b feat(napi/parser): expose span positions of import.meta (#7677) 2024-12-05 11:03:52 +00:00
Boshen
b8dc333ed4 feat(syntax): add ExportEntry::is_type (#7676) 2024-12-05 09:02:18 +00:00
Boshen
7c62a33a06 feat(napi/parser): return esm info (#7602)
The parser now returns import / export statement information, which can be used for parser plugins.
2024-12-03 11:21:54 +00:00
Boshen
33e5a49c78 feat(syntax): add statement span to ImportEntry and ExportEntry (#7583) 2024-12-02 14:20:30 +00:00
Boshen
f0e7acc68b refactor(syntax): change ModuleRecord::not_esm to has_module_syntax (#7579) 2024-12-02 09:32:57 +00:00
Boshen
18519dea33 refactor(syntax): remove ModuleRecord::export_default (#7578)
This value can be derived.
2024-12-02 09:17:57 +00:00
Boshen
d476660b0b refactor(syntax): remove ModuleRecord::exported_bindings_duplicated because it is a syntax error (#7577) 2024-12-02 08:48:01 +00:00
Boshen
17663f55d3 refactor(syntax): remove ModuleRecord::export_default_duplicated because it is a syntax error (#7576) 2024-12-02 08:19:59 +00:00
Boshen
79014ffb1d refactor(syntax): clean up ModuleRecord (#7568) 2024-12-01 14:49:04 +00:00
Boshen
c2ced15dfd feat(parser,linter)!: use a different ModuleRecord for linter (#7554)
The parser returns a simple `ModuleRecord` that is allocated in the arena for performance reasons.

The linter uses a more complicated, `Send` + `Sync` `ModuleRecord` that will hold more cross-module information.

The next step is to return more esm information from the parser to eliminated the need of the `oxc_module_lexer` crate.
2024-11-30 16:02:01 +00:00
overlookmotel
4a98230f07 perf(syntax): use FxDashMap for exported bindings (#7525)
Same as #7521. Use `FxDashMap` instead of plain `DashMap` for hash map storing exported bindings.
2024-11-28 12:15:11 +00:00
overlookmotel
169b8bfa5c refactor(linter, syntax): introduce type alias FxDashMap (#7520)
Pure refactor. Introduce a type alias `FxDashMap<K, V>` for `DashMap<K, V, FxBuildHasher>`. This makes the code using it clearer.
2024-11-28 11:45:14 +00:00
DonIsaac
335b7f22c5 docs(syntax): enable lint warnings on missing docs, and add a lot of documentation (#6611)
Part of https://github.com/oxc-project/backlog/issues/130

I didn't add doc comments to everything; I'm missing context for module-related data types and I have other things to do :P
2024-10-15 22:50:45 +00:00
DonIsaac
e04841c6a1 docs(syntax): add ModuleRecord documentation (#5818) 2024-09-17 05:22:01 +00:00
Boshen
99a40ce6ac fix(semantic): export default foo should have ExportLocalName::Default(NameSpan) entry (#3823) 2024-06-22 11:09:23 +00:00
Boshen
051ceb6539
chore: improve some format by running cargo +nightly fmt 2024-06-19 00:48:30 +08:00
Boshen
ae6561308c
refactor(syntax): use FxHashMap for ModuleRecord::request_modules (#3124)
closes #3121

The ordering is not important here.
2024-04-29 03:37:34 +00:00
Don Isaac
1ea24ea0a7
fix(semantic): symbols inside functions and classes incorrectly flagged as exported (#2896)
# What This PR Does

Symbols declared inside exported functions and classes were being
incorrectly flagged with `SymbolFlags::Export`.

For example,
```ts
export function foo<T>(a: T) {
  let b = String(a)
  return b
}
```
`T`, `a`, and `b` were all flagged as exported.

## Further Work
It doesn't seem like exported enums and interfaces are being included in
`ModuleRecord`. Am I looking in the wrong place, or are they actually
missing?
2024-04-05 23:01:27 +08:00
Dunqing
df628289ff
fix(linter/import): ignore export declaration in no-duplicates (#2863) 2024-03-30 12:57:43 +08:00
Dunqing
1b5e544a36
refactor(semantic): distinguish whether requested_modules is type imports/exports (#2848) 2024-03-29 19:52:30 +08:00
Dunqing
712b3d2a11
feat(semantic): distinguish type imports in ModuleRecord (#2785)
I am not sure moving `ImportOrExportKind` to `oxc-syntax` is a good
solution.
2024-03-23 21:38:17 +08:00
Boshen
366a87975d
feat(linter): resolve ESM star exports (#2682) 2024-03-11 21:43:11 +08:00
overlookmotel
0646bf34fa
refactor: rename CompactString to CompactStr (#2619)
Preparatory step for #2620.

This PR purely changes names of types and methods:

* `CompactString` -> `CompactStr`
* `Atom::to_compact_string` -> `to_compact_str`
* `Atom::into_compact_string` -> `into_compact_str`

Have split this into a separate PR as the diff is large, but it does absolutely nothing but renaming (I've checked the whole diff twice, so feel free not to check it again!). This should make it easier to see the content of the substantive change in #2620.
2024-03-06 12:24:23 +08:00
Boshen
d41dcc316e
feat(linter): remove all commonjs logic for import plugin (#2537) 2024-02-28 18:13:44 +08:00
Boshen
be6b8b7ce6
[BREAKING CHANGE] Change Atom to Atom<'a> to make it safe (#2497)
Part of #2295

This PR splits the `Atom` type into `Atom<'a>` and `CompactString`.

All the AST node strings now use `Atom<'a>` instead of `Atom` to signify
it belongs to the arena.

It is now up to the user to select which form of the string to use.

This PR essentially removes the really unsafe code 


93742f89e9/crates/oxc_span/src/atom.rs (L98-L107)

which can lead to 

![image](https://github.com/oxc-project/oxc/assets/1430279/8c513c4f-19b0-4b63-b61c-e07c187c95b5)
2024-02-26 19:34:40 +08:00
Boshen
fba66dcc75
fix(linter): improve import/no-named-as-default (#2494) 2024-02-25 21:24:08 +08:00
Boshen
f64c7e04a3
feat(linter): handle cjs module.exports.foo = bar and exports.foo = bar (#2492) 2024-02-24 23:54:43 +08:00
Boshen
3e1794d6c0
feat(syntax): implement Debug for ModuleRecord (#2488) 2024-02-24 17:34:42 +08:00
Wenzhe Wang
90524c83f7
feat(linter): add eslint-plugin-import(export) rule (#1654) 2023-12-13 23:12:45 +08:00
Wenzhe Wang
7a9f821b1d
chore: fix typo (#889) 2023-09-10 21:44:09 +08:00
Boshen
9ff12a9696
feat(linter): eslint-plugin-import/no-self-import (#878)
closes #440 #441
2023-09-10 00:12:26 +08:00
Boshen
75d928a20d feat(syntax): add loaded_modules to ModuleRecord 2023-09-07 22:56:09 +08:00
Boshen
fdf288c685
refactor: improve code coverage in various places (#721) 2023-08-11 15:17:49 +08:00
Boshen
17a73b1eef
refactor(ast): move ModuleRecord to oxc_syntax 2023-07-03 22:54:27 +08:00
Renamed from crates/oxc_ast/src/module_record.rs (Browse further)