DonIsaac
6159560170
fix(parser): string ImportSpecifiers for type imports ( #6352 )
...
Fixes a parse failure on imports like this:
```ts
import { type "<A>" as typeA } from "./arbitraryModuleNamespaceIdentifiers_module";
```
2024-10-08 08:17:30 +00:00
DonIsaac
40932f79b1
refactor(cfg): use IndexVec for storing basic blocks ( #6323 )
...
Use an `IndexVec` when storing basic blocks. This makes the link between nodes in `.graph` and elements of `.basic_blocks` more clear. I had to rename `BasicBlockId` to `BlockNodeId` to avoid a name collision. I wasn't sure what else to name the `Idx` type for the basic blocks vec.
2024-10-07 19:28:40 -04:00
DonIsaac
95ca01ccc1
refactor(cfg)!: make BasicBlock::unreachable private ( #6321 )
...
Protect `unreachable` property of basic blocks in preparation of upcoming
refactors. This is technically a breaking change.
2024-10-07 15:13:56 +00:00
Boshen
9e62396803
feat(syntax_operations): add crate oxc_syntax_operations ( #6202 )
...
I intend to add constant folding and eval logic to this crate. There are downstream tools that require these functionalities alone.
It's also reasonable to move these traits out of the `ast` crate.
2024-10-07 05:39:59 +00:00
DonIsaac
14275b138e
feat(cfg): color-code edges in CFG dot diagrams ( #6314 )
...
- add `Attrs`, a nominal struct for cleaner management of node/edge styles and
other attributes
- Style edges in DOT diagrams based on their kind
2024-10-07 02:43:30 +00:00
overlookmotel
bdd9e925f1
refactor(semantic): rename vars from ast_node_id to node_id ( #6304 )
...
Style nit. We renamed `AstNodeId` to `NodeId`, so rename vars from `ast_node_id` to `node_id` too.
2024-10-06 01:03:48 +00:00
overlookmotel
d11070051b
refactor(semantic): dereference IDs as quickly as possible ( #6303 )
...
It's better to pass around `SymbolId`s (4 bytes) than `&SymbolId`s (8 bytes). In my view, the style of dereferencing immediately is preferable.
2024-10-06 01:03:47 +00:00
overlookmotel
e19deaa102
ci(transformer): move post-transform checker to tasks crate ( #6288 )
...
Move post-transform checker into a `tasks` crate. It doesn't feel like it belongs in `oxc_semantic`. It also feels like too heavy a lump of code to put in `tasks/common`.
2024-10-05 14:48:37 +00:00
overlookmotel
d4f2ee99c1
test(transformer): tidy up transform checker ( #6287 )
...
Pure refactor. Use `oxc_semantic`'s public APIs and shorten a few lines.
2024-10-05 14:48:36 +00:00
overlookmotel
0f5afd7ede
test(transformer): transform checker output symbol name for mismatches ( #6286 )
...
Transform checker include symbol names in output for symbol mismatches. This is rather more helpful for locating bugs than just `SymbolId(3)`.
2024-10-05 14:42:06 +00:00
oxc-bot
6c01fd7480
release(crates): v0.30.5 ( #6163 )
...
## [0.30.5] - 2024-09-29
### Features
- 15552ac napi/transform: Display semantic error (#6160 ) (Boshen)
- f50fdcd napi/transform: Make react refresh option take a boolean
(#6146 ) (Boshen)
### Bug Fixes
- f27d59f napi/transform: Remove confusing `jsx` option (#6159 ) (Boshen)
- bfd1988 transformer/react: Should not collect use-hooks if it's a
nested member expression (#6143 ) (Dunqing)
### Refactor
- ab187d1 codegen: Restrict visibility of internal methods (#6145 )
(DonIsaac)
- 375bebe transformer: Improve parsing React pragmas (#6138 )
(overlookmotel)
- 0836f6b transformer: Move parsing pragmas into TS transform (#6137 )
(overlookmotel)
- 30424fa transformer: TS transforms only store options they need
(#6135 ) (overlookmotel)
---------
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2024-09-29 15:20:19 +08:00
oxc-bot
73098a43ff
release(crates): v0.30.4 ( #6134 )
...
## [0.30.4] - 2024-09-28
### Bug Fixes
- 8582ae3 codegen: Missing parentheses if there is a pure comment before
a NewExpression as a ComputedMemberExpression's callee (#6105 ) (Dunqing)
- fd6798f parser: Remove unintended `pub Kind` (#6109 ) (Boshen)
- 6f98aad sourcemap: Align sourcemap type with Rollup (#6133 ) (Boshen)
- 64d4756 transformer: Fix debug assertion in `Stack` (#6106 )
(overlookmotel)
### Performance
- 05852a0 codegen: Do not check whether there are annotation comments or
not if we don't preserve annotation comments (#6107 ) (Dunqing)
### Documentation
- 26a273a oxc-transform: Update README (Boshen)
- e2c5baf transformer: Fix formatting of README (#6111 ) (overlookmotel)
### Refactor
- 2090fce semantic: Fix lint warning in nightly (#6110 ) (overlookmotel)
- 7bc3988 transformer: Remove dead code (#6124 ) (overlookmotel)
- 07fe45b transformer: Exponentiation operator: convert to match (#6123 )
(overlookmotel)
- 4387845 transformer: Share `TypeScriptOptions` with ref not `Rc`
(#6121 ) (overlookmotel)
- 09e41c2 transformer: Share `TransformCtx` with ref not `Rc` (#6118 )
(overlookmotel)
- 58fd6eb transformer: Pre-allocate more stack space (#6095 )
(overlookmotel)
- 9ac80bd transformer: Add wrapper around `NonNull` (#6115 )
(overlookmotel)
- c50500e transformer: Move common stack functionality into
`StackCommon` trait (#6114 ) (overlookmotel)
- 9839059 transformer: Simplify `StackCapacity` trait (#6113 )
(overlookmotel)
---------
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2024-09-28 13:08:44 +08:00
overlookmotel
2090fce4bc
refactor(semantic): fix lint warning in nightly ( #6110 )
...
Fix a lint warning which you only get on nightly (so appears when running Miri).
2024-09-27 13:45:16 +00:00
oxc-bot
d56264ee9a
release(crates): v0.30.3 ( #6104 )
...
## [0.30.3] - 2024-09-27
### Bug Fixes
- a8338dd isolated-declarations: Accidentally collected references of
original ast (#6102 ) (Dunqing)
- 933a743 semantic: Add interfaces and functions to
`SymbolFlags::ClassExcludes` (#6057 ) (DonIsaac)
### Documentation
- 6167f29 oxc-transform: Modify the example code in the `Readme` file
(#6103 ) (loong.woo)
---------
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2024-09-27 14:23:48 +08:00
DonIsaac
933a7431b1
fix(semantic): add interfaces and functions to SymbolFlags::ClassExcludes ( #6057 )
...
This brings ClassExcludes into alignment with TypeScript.
2024-09-27 05:57:03 +00:00
oxc-bot
60d02a61f9
release(crates): v0.30.2 ( #6100 )
...
## [0.30.2] - 2024-09-27
### Features
- 60c52ba ast: Allow passing span to `void_0` method (#6065 ) (Dunqing)
- cca433f codegen: Print `vite` / `webpack` special comments (#6021 )
(Dunqing)
- 8d026e1 regular_expression: Implement `GetSpan` for RegExp AST nodes
(#6056 ) (camchenry)
- 7764793 regular_expression: Implement visitor pattern trait for regex
AST (#6055 ) (camchenry)
- f866781 semantic: Check for type annotations on left side of `for..in`
and `for..of` iterators (#6043 ) (DonIsaac)
- 8b2e9aa semantic: Check for JSDoc types in TS type annotations (#6042 )
(DonIsaac)
- 28da771 transformer: Do not transform `**` with bigint literals
(#6023 ) (Boshen)
### Bug Fixes
- a88504c diagnostics: Check for terminal when displaying links (#6018 )
(Boshen)
- 418ae25 isolated-declarations: Report uninferrable types in arrays
(#6084 ) (michaelm)
- e0a8959 minifier: Compute `void number` as `undefined` (#6028 )
(Boshen)
- 0658576 paresr: Do not report missing initializer error in ambient
context (#6020 ) (Boshen)
- b1af73d semantic: Do not create a `global` symbol for `declare global
{}` (#6040 ) (DonIsaac)
- c8682e9 semantic,codegen,transformer: Handle definite `!` operator in
variable declarator (#6019 ) (Boshen)
### Performance
- 6b7d3ed isolated-declarations: Should clone transformed AST rather
than original AST (#6078 ) (Dunqing)
- 85aff19 transformer: Introduce `Stack` (#6093 ) (overlookmotel)
- ad4ef31 transformer: Introduce `NonEmptyStack` (#6092 ) (overlookmotel)
### Documentation
- 3099709 allocator: Document `oxc_allocator` crate (#6037 ) (DonIsaac)
- d60ceb4 oxc: Add README.md and crate-level docs (#6035 ) (DonIsaac)
- efabfc8 semantic: Improve doc comments on `Reference` methods (#6076 )
(overlookmotel)
### Refactor
- 1fc80d1 ast: Move all ts ast related impl methods to `ast_impl`
(#6015 ) (Dunqing)
- fe696f0 codegen: Simplify printing annotation comments (#6027 )
(Dunqing)
- e60ce50 transformer: Add `SparseStack::with_capacity` method (#6094 )
(overlookmotel)
- 1399d2c transformer: Move `SparseStack` definition into folder (#6091 )
(overlookmotel)
- 6bd29dd transformer: Add more debug assertions (#6090 ) (overlookmotel)
- c90b9bf transformer: Rename `SparseStack` methods (#6089 )
(overlookmotel)
- 2b380c8 transformer: Remove unsued `self.ctx` (#6022 ) (Boshen)
### Testing
- 93575cd semantic: Add comprehensive regression test suite (#5976 )
(DonIsaac)
- a4cec75 transformer: Enable tests (#6032 ) (overlookmotel)
---------
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2024-09-27 13:28:12 +08:00
overlookmotel
efabfc8dac
docs(semantic): improve doc comments on Reference methods ( #6076 )
2024-09-26 12:22:31 +00:00
DonIsaac
b1af73db81
fix(semantic): do not create a global symbol for declare global {} ( #6040 )
...
Re-creation of #6004 to unblock it from down-stack PRs. @Boshen has already reviewed the previous PR and determined this to be correct behavior.
2024-09-25 08:46:00 +00:00
DonIsaac
f866781f49
feat(semantic): check for type annotations on left side of for..in and for..of iterators ( #6043 )
2024-09-25 02:51:17 +00:00
DonIsaac
8b2e9aa744
feat(semantic): check for JSDoc types in TS type annotations ( #6042 )
...
Closes #5982
2024-09-25 02:35:59 +00:00
DonIsaac
93575cd09e
test(semantic): add comprehensive regression test suite ( #5976 )
...
# What This PR Does
Enhance's `oxc_semantic`'s integration tests with a regression test suite that ensures semantic's contract guarantees hold over all test cases in typescript-eslint's scope snapshot tests. Each test case checks a separate assumption and runs independently from other test cases.
This PR sets up the code infrastructure for this test suite and adds two test cases to start us off:
1. Reflexivity tests for `IdentifierReference` and `Reference`
2. Symbol declaration reflexivity tests between declarations in `SymbolTable` and their corresponding node in the AST.
Please refer to the doc comments for each of these tests for an in-depth explanation.
## Aren't our existing tests sufficient?
`oxc_semantic` is currently tested directly via
1. scope snapshot tests, ported from `typescript-eslint`
2. Hand-written tests using `SemanticTester` in `tests/integration`
And indirectly via
3. Conformance test suite over Test262/TypeScript/Babel
4. Linter snapshot tests
Shouldn't this be sufficient? I argue not, for two reasons:
## 1. Clarify Contract Ambiguity
When using `Semantic`, I often find myself asking these questions?
* Does `semantic.symbols().get_declaration(id)` point to a `BindingIdentifer`/`BindingPattern` or the declaration that holds an identifier/pattern?
* Will a `Reference`'s `node_id` point me to an `IdentifierReference` or the expression/statement that is holding an `IdentifierReference`?
* When will `BindingIdentifier`'s `symbol_id` get populated? can we guarantee that after semantic analysis it will never be `None`?
* What actually _is_ the node covered by `semantic.symbols().get_span(id)`? This one really messed me up, and resulted in me creating #4739 .
* What scope does `Function::scope_id` point to? The one where the function is declared? The one created by its body? The one created by the type annotations but before the function body? Or something else entirely?
**These test cases are meant to answer such questions and guarnatee those answers as test cases**. No other existing testing solution currently upholds such promises: they only tell us if code expecting one answer or another produces an unexpected result. However, those parts of the codebase could always be adjusted to conform to new `Semantic` behavior, meaning no contract guarantees are actually upheld.
## 2. Existing Tests Do Not Test The Same Behavior
I'll cover each above listed test case one-by-one:
1. For starters, these tests only cover scopes. Additionally, they only tell us **how behavior has changed**, not that **behavior is now incorrect**.
2. These _do_ generally cover the same behaviors, but **are not comprehensive and are difficult to maintain**. These are unit tests that should be used hand-in-hand with this new test suite.
3. The most relevant tests here are for the parser. However, these tests **only tell us if a syntax/parse error was produced**, and tell us nothing about the validity of `Semantic`.
4. Relying on lint rule's output is a a mediiocre proxy of `Semantic`'s behavior at best. They can tell us if changes to `Semantic` break assumptions made by lint rules, but they do not tell us if **those assumptions are the ones we want to uphold to external crates consuming `Semantic`.
2024-09-25 02:24:57 +00:00
Boshen
c8682e9fcb
fix(semantic,codegen,transformer): handle definite ! operator in variable declarator ( #6019 )
...
closes #5999
2024-09-24 08:32:05 +00:00
oxc-bot
7f0e27afd9
release(crates): v0.30.1 ( #6016 )
...
## [0.30.1] - 2024-09-24
### Features
- 5c323a2 minifier: Loop compressor passes (#6013 ) (Boshen)
### Bug Fixes
- 9ca202a codegen: Preserve newlines between comments (#6014 ) (Boshen)
- 4a99372 codegen: Print jsdoc comments for `TSEnumMember`s (#6007 )
(camc314)
- 97a2c41 isolated-declarations: False positive for class private getter
with non-inferrable return type (#5987 ) (michaelm)
### Performance
- 2b17003 linter, prettier, diagnostics: Use `FxHashMap` instead of
`std::collections::HashMap` (#5993 ) (camchenry)
- 7b90d79 transformer: `SparseStack` always keep minimum 1 entry (#5962 )
(overlookmotel)
- 28fe80a transformer: Logical assignment operator transform use
`SparseStack` (#5960 ) (overlookmotel)
- 9f7d4b7 transformer: Exponentiation operator transform use
`SparseStack` (#5959 ) (overlookmotel)
- 5dc0154 transformer: Nullish coalescing operator transform use
`SparseStack` (#5942 ) (overlookmotel)
- 618e89e transformer: Arrow function transform: reduce stack memory
usage (#5940 ) (overlookmotel)
### Documentation
- 5a0d17c ast: Document more AST nodes (#6000 ) (DonIsaac)
- 18371dd oxc: Include feature-guarded modules in docs.rs (#6012 )
(DonIsaac)
- 1abfe8f semantic: Document `SymbolTable` (#5998 ) (DonIsaac)
- f5eee72 semantic: Correct docs for `Reference` (#5992 ) (overlookmotel)
- 860f108 transformer: Add to arrow functions transform docs (#5989 )
(overlookmotel)
### Refactor
- 0a2f687 minifier: Move dce conditional expression to `RemoveDeadCode`
(#5971 ) (Boshen)
- f02bf51 transformer: Arrow function transform: remove unnecessary
assertion (#6002 ) (overlookmotel)
---------
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2024-09-24 14:03:03 +08:00
DonIsaac
1abfe8f02c
docs(semantic): document SymbolTable ( #5998 )
...
Re-creation of #5978 , per @overlookmotel's request
2024-09-23 23:19:41 +00:00
camchenry
2b17003e0b
perf(linter, prettier, diagnostics): use FxHashMap instead of std::collections::HashMap ( #5993 )
...
Using `FxHashMap` is faster than `HashMap` in many cases, especially for hashing-heavy workloads. This change improves the performance of the linter, prettier, and diagnostics crates by using `FxHashMap` instead of `std::collections::HashMap`.
2024-09-23 16:29:05 +00:00
overlookmotel
f5eee723fa
docs(semantic): correct docs for Reference ( #5992 )
...
Correct docs. `JSXIdentifier` no longer has a reference.
2024-09-23 14:48:19 +00:00
oxc-bot
b9178cc5ae
release(crates): v0.30.0 ( #5986 )
...
## [0.30.0] - 2024-09-23
- c96b712 syntax: [**BREAKING**] Remove `SymbolFlags::ArrowFunction`
(#5857 ) (overlookmotel)
### Features
- ae89145 ast: Revert `#[non_exhaustive]` change (#5885 ) (Boshen)
- e8bf30a ast: Add `Comment::real_span` (#5764 ) (Boshen)
- d901772 codegen: Implement minify number from terser (#5929 ) (Boshen)
- 9f6696a codegen: Add new lines to `TSTypeParameterDeclaration` (#5853 )
(Boshen)
- bcdbba3 codegen: Print jsdoc comments that are attached to statements
and class elements (#5845 ) (Boshen)
- 26386da codegen: Have `with_source_text` reserve memory for code
buffer (#5823 ) (DonIsaac)
- 4a62703 isolated-declarations: Handle `export` in the `namespace`
correctly (#5950 ) (Dunqing)
- 84a5816 isolated_declarations: Add `stripInternal` (#5878 ) (Boshen)
- dfbde2c isolated_declarations: Print jsdoc comments (#5858 ) (Boshen)
- 3bf7b24 linter: Make `typescript/no-duplicate-enum-values` a
`correctness` rule (#5810 ) (DonIsaac)
- 9076dee minifier: Implement part of `StatementFusion` (#5936 ) (Boshen)
- a111bb6 oxc_wasm: Add `verbse` option to `debug_dot` (#5879 )
(IWANABETHATGUY)
- 8e7556f parser: Calculate leading and trailing position for comments
(#5785 ) (Boshen)
- 65c337a prettier: Improve ts compatibility (#5900 ) (Alexander S.)
- 6d9ccdd prettier: Support TSMappedType (#5834 ) (Alexander S.)
- b5ac5a6 prettier: Support TSModuleDeclaration (#5813 ) (Alexander S.)
- 74d8714 semantic: Add help message for invalid `let x?: number`
(#5969 ) (DonIsaac)
- 3230ae5 semantic: Add `SemanticBuilder::with_excess_capacity` (#5762 )
(overlookmotel)
- a5f2e9a span: Impl `From<Atom<'a>>` for `Atom` (#5809 ) (DonIsaac)
- a07f03a transformer: Sync `Program::source_type` after transform
(#5887 ) (Boshen)
- 635e918 traverse: `generate_uid_name` method (#5839 ) (overlookmotel)
### Bug Fixes
- 66e919e ast: Correct TS types for JSX (#5884 ) (overlookmotel)
- 0d10521 ast: Serialize `JSXMemberExpressionObject` to estree (#5883 )
(overlookmotel)
- a822c9d ast: Serialize `JSXElementName` to estree (#5882 ) (Boshen)
- f4aefb5 codegen: Print `let[0]` as `(let)[0]` (#5947 ) (Boshen)
- cee9d0b codegen: Fix spacing of `for await (x of y)` (#5890 ) (Boshen)
- 5901d2a codegen: Various spacing issues (#5820 ) (Boshen)
- fd1c46c isolated-declarations: Infer failed if there are two
setter/getter methods that need to be inferred (#5967 ) (Dunqing)
- 6df82ee isolated-declarations: False positive for class private method
that has arguments without type annotations (#5964 ) (Dunqing)
- 6a9e71d isolated-declarations: Wrap TSFunctionType in parentheses if
it is inside the `TSUnionType` (#5963 ) (Dunqing)
- ea32d5b isolated-declarations: Should print constructor assignments
first (#5934 ) (Dunqing)
- 0f96b59 isolated-declarations: Missing print comments in class's
private method (#5931 ) (Dunqing)
- 8780c54 isolated-declarations: Do not union a undefined when the param
type is any or unknown (#5930 ) (Dunqing)
- f07ff14 isolated-declarations: Should not transform signature that has
type annotation (#5927 ) (Dunqing)
- b6a9178 isolated-declarations: Don't collect references when
`ExportNamedDeclaration` has source (#5926 ) (Dunqing)
- 756a571 isolated-declarations: Missing empty export when has an export
declare (#5925 ) (Dunqing)
- e148c80 isolated_declarations: Try fix fixtures (Boshen)
- 9b3f763 isolated_declarations: Try fix new line issue (Boshen)
- ee748b0 isolated_declarations: Fix fixture spacing (Boshen)
- 362c427 mangler,codegen: Do not mangle top level symbols (#5965 )
(Boshen)
- 127c881 napi/transform: Fix jsdoc links (#5886 ) (Boshen)
- 6c04fa1 napi/transform: Make isolated_declaration options optional
(#5880 ) (Boshen)
- 42dcadf parser: Hashbang comment should not keep the end newline char
(#5844 ) (Boshen)
- f1551d6 semantic: `?` on variable declaration type annotations is a
syntax error (#5956 ) (DonIsaac)
- a23879c semantic: Analyze `ReferenceFlags` incorrectly when there are
nested `AssignmentTarget` (#5847 ) (Dunqing)
- 87323c6 transformer: Arrow function transform: prevent stack getting
out of sync (#5941 ) (overlookmotel)
- 4e9e838 transformer: Fix arrow function transform (#5933 )
(overlookmotel)
- 4d5c4f6 transformer: Fix reference flags in logical assignment
operator transform (#5903 ) (overlookmotel)
- d335a67 transformer: Fix references in logical assignment operator
transform (#5896 ) (overlookmotel)
- 9758c1a transformer: JSX source: add `var _jsxFileName` statement
(#5894 ) (overlookmotel)
- 49ee1dc transformer: Arrow function transform handle `this` in arrow
function in class static block (#5848 ) (overlookmotel)
- 172fa03 transformer: Fix stacks in arrow function transform (#5828 )
(overlookmotel)
- d74c7fa transformer: Remove `AstBuilder::copy` from arrow functions
transform (#5825 ) (overlookmotel)
- 3cc38df transformer/react: React refresh panics when encounter `use`
hook (#5768 ) (Dunqing)
### Performance
- cd34f07 isolated-declarations: Combine type/value bindings and
type/value references into one (#5968 ) (Dunqing)
- c477424 mangler: Use `sort_unstable_by_key` instead of `sort_by`
(#5948 ) (Boshen)
- c3e0fb6 semantic: Simplify resetting ReferenceFlags in
`AssignmentExpression` (#5846 ) (Dunqing)
- ff7d9c1 transformer: Arrow function transform: calculate whether
`this` is in arrow function lazily (#5850 ) (Dunqing)
- fd70c4b transformer: Arrow function transform more efficient scope
search (#5842 ) (overlookmotel)
- 56703a3 transformer: Make branch more predictable in arrow function
transform (#5833 ) (overlookmotel)
- 36e698b transformer: Call `transform_jsx` in `exit_expression` rather
than `enter_expression` (#5751 ) (Dunqing)
- aac8316 transformer/react: Improve `is_componentish_name`'s
implementation (#5769 ) (Dunqing)
### Documentation
- acc2d16 ast: Document most TypeScript AST nodes (#5983 ) (DonIsaac)
- 47c2faa ast: Document TryStatement and related nodes (#5970 )
(DonIsaac)
- 83ca7f5 diagnostics: Fully document `oxc_diagnostics` (#5865 )
(DonIsaac)
- bacfbb8 oxc: Add submodule documentation (#5984 ) (DonIsaac)
- 3120c6c parser: Add module and struct level documentation (#5831 )
(DonIsaac)
- 1ccf290 semantic: Document `AstNode` and `AstNodes` (#5872 ) (DonIsaac)
- e04841c syntax: Add ModuleRecord documentation (#5818 ) (DonIsaac)
- 7085829 transformer: Arrow function transform: comment about
incomplete implementation (#5945 ) (overlookmotel)
- 66b4688 transformer: React: convert docs to standard format (#5891 )
(overlookmotel)
- 7f05eed transformer: Add comment about missing features in arrow
function transform (#5855 ) (overlookmotel)
- 8770647 transformer: Correct docs for arrow function transform (#5854 )
(overlookmotel)
### Refactor
- f4fac0f ast: Remove `.iter()` where not needed (#5904 ) (camchenry)
- 17cd903 ast: Move functions to top level in `ast` macro (#5793 )
(overlookmotel)
- cf97f6d ast: Import `syn` types in `ast` macro (#5792 ) (overlookmotel)
- dc10eaf ast: Split `ast` macro into multiple files (#5791 )
(overlookmotel)
- 6dd6f7c ast: Change `Comment` struct (#5783 ) (Boshen)
- bb95306 codegen: Change annotation comment tests to snapshot (#5800 )
(Boshen)
- e613a3d codegen: Prepare to add leading comments by adding a template
method pattern (#5784 ) (Boshen)
- 7caae5b codegen: Add `GetSpan` requirement to `Gen` trait (#5772 )
(Boshen)
- c84bd28 isolated-declarations: Simplify to infer the getter and setter
methods (#5966 ) (Dunqing)
- 67b4220 isolated-declarations: Simplify handling VariableDeclaration
transform (#5916 ) (Dunqing)
- 2fd5c2a isolated-declarations: Pre-filter statements that do not need
to be transformed (#5909 ) (Dunqing)
- 943bd76 minifier: Move tests to their src files (#5912 ) (Boshen)
- cbaeea6 minifier: Clean up some tests (#5910 ) (Boshen)
- 144611e minifier: Align ast pass names with closure compiler (#5908 )
(Boshen)
- 31e9db4 parser: Shorten `UniquePromise` code (#5805 ) (overlookmotel)
- 2322b8b parser: Remove dead code warning when running tests (#5804 )
(overlookmotel)
- 4abfa76 parser: Add `--ast` and `--comments` to example (Boshen)
- a4b55bf parser: Use AstBuilder (#5743 ) (Boshen)
- d910304 semantic: Rename lifetime on `impl IntoIterator for &AstNodes`
(#5881 ) (overlookmotel)
- f360e2c semantic: Remove redundunt is_leading check for JSDoc (#5877 )
(leaysgur)
- 9115dd9 semantic: Use `Comment::attached_to` for jsdoc attachment
(#5876 ) (Boshen)
- db4f16a semantic: Call `with_trivias` before `build_with_jsdoc`
(#5875 ) (Boshen)
- 3d13c6d semantic: Impl `IntoIterator` for `&AstNodes` (#5873 )
(DonIsaac)
- 47d9ad8 semantic: Remove unused vars warning in release mode (#5803 )
(overlookmotel)
- 155d7fc transformer: Arrow function transform: ignore type fields when
finding enclosing arrow function (#5944 ) (overlookmotel)
- 2cf5607 transformer: Split up logical assignment operator transform
into functions (#5902 ) (overlookmotel)
- 41fbe15 transformer: Internal functions not `pub` in logical
assignment operator transform (#5898 ) (overlookmotel)
- b11d91c transformer: Remove nested match in logical assignment
operator transform (#5897 ) (overlookmotel)
- 52c9903 transformer: JSX: use `AstBuilder::vec_from_iter` (#5862 )
(overlookmotel)
- 74364ad transformer: JSX: merge `transform_jsx_attribute_item` into
`transform_jsx` (#5861 ) (overlookmotel)
- d2eaa7d transformer: Reorder match arms in JSX transform (#5860 )
(overlookmotel)
- 58a8327 transformer: Simplify match in JSX transform (#5859 )
(overlookmotel)
- b9c4564 transformer: Transformer example output semantic + transformer
errors (#5852 ) (overlookmotel)
- 03e02a0 transformer: Comment about potential improvement to arrow
function transform (#5841 ) (overlookmotel)
- 40cdad5 transformer: Remove repeat code in arrow function transform
(#5837 ) (overlookmotel)
- 3dd188c transformer: Deref `SymbolId` immediately (#5836 )
(overlookmotel)
- 03a9e1a transformer: Reorder methods in arrow function transform
(#5830 ) (overlookmotel)
- 4d97184 transformer: Rename vars in arrow function transform (#5827 )
(overlookmotel)
- 01c5b7c transformer: Shorten code in arrow functions transform (#5826 )
(overlookmotel)
- 85ac3f7 transformer: Arrow functions transform do not wrap function
expressions in parentheses (#5824 ) (overlookmotel)
- 1c1353b transformer: Use AstBuilder instead of using struct
constructor (#5778 ) (Boshen)
### Testing
- 84b7d1a index: Add unit tests to `oxc_index` (#5979 ) (DonIsaac)
- d6cbbe7 isolated-declarations: Arrow function unions in return
signature (#5973 ) (DonIsaac)
---------
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2024-09-23 11:20:12 +08:00
DonIsaac
74d8714d5a
feat(semantic): add help message for invalid let x?: number ( #5969 )
2024-09-22 15:59:49 +00:00
DonIsaac
f1551d64bc
fix(semantic): ? on variable declaration type annotations is a syntax error ( #5956 )
...
Closes #5955
2024-09-22 00:01:47 +00:00
Dunqing
a23879cb96
fix(semantic): analyze ReferenceFlags incorrectly when there are nested AssignmentTarget ( #5847 )
...
close : #5801
2024-09-21 04:13:24 +00:00
Dunqing
c3e0fb68c5
perf(semantic): simplify resetting ReferenceFlags in AssignmentExpression ( #5846 )
2024-09-21 04:13:23 +00:00
Boshen
a07f03aab3
feat(transformer): sync Program::source_type after transform ( #5887 )
...
closes #5552
2024-09-19 14:41:07 +00:00
overlookmotel
d910304eac
refactor(semantic): rename lifetime on impl IntoIterator for &AstNodes ( #5881 )
...
Follow on after #5873 .
Rename lifetime. I generally consider `'a` in AST types as short for `'ast`, so using `'ast` to mean something else is confusing. Rename lifetime to `'n` (short for `'nodes`).
2024-09-19 09:30:47 +00:00
IWANABETHATGUY
a111bb69af
feat(oxc_wasm): add verbse option to debug_dot ( #5879 )
...
1. Adding a new option to control displaying `implicit error` edge.
**verbose**

**disable verbose**

2024-09-19 06:13:03 +00:00
leaysgur
f360e2c6f8
refactor(semantic): Remove redundunt is_leading check for JSDoc ( #5877 )
...
Late review for #5876 👀
`is_leading()` was already covered by `is_jsdoc()`.
9115dd947a/crates/oxc_ast/src/trivia.rs (L108-L110)
2024-09-19 06:08:31 +00:00
Boshen
9115dd947a
refactor(semantic): use Comment::attached_to for jsdoc attachment ( #5876 )
...
I can't believe tests passed on my first try 🤔
2024-09-19 04:48:30 +00:00
Boshen
db4f16a98f
refactor(semantic): call with_trivias before build_with_jsdoc ( #5875 )
2024-09-19 04:12:57 +00:00
DonIsaac
3d13c6d1f9
refactor(semantic): impl IntoIterator for &AstNodes ( #5873 )
...
Simple quality-of-life change.
2024-09-19 03:22:29 +00:00
DonIsaac
1ccf2907be
docs(semantic): document AstNode and AstNodes ( #5872 )
...
Part of #5870
2024-09-19 03:22:29 +00:00
overlookmotel
c96b712f6b
refactor(syntax)!: remove SymbolFlags::ArrowFunction ( #5857 )
...
`SymbolFlags::ArrowFunction` is an oddity, as whether a symbol is an arrow function is not statically knowable. In the following cases, `f` symbol did not have `ArrowFunction` flag set:
```js
const {f} = {f: () => {}};
```
```js
let f = 123;
f = () => {};
```
`SymbolFlags::ArrowFunction` is therefore not particularly useful, and possibly misleading. Having it complicates the transformer, and it's not used anywhere in Oxc.
This PR removes it.
2024-09-18 14:03:03 +00:00
overlookmotel
47d9ad8cbf
refactor(semantic): remove unused vars warning in release mode ( #5803 )
...
Avoid an `unused_variables` warning in release mode for a variable which is only used in debug mode.
2024-09-16 15:32:36 +00:00
Boshen
6dd6f7ca26
refactor(ast): change Comment struct ( #5783 )
2024-09-15 09:22:58 +00:00
overlookmotel
3230ae5842
feat(semantic): add SemanticBuilder::with_excess_capacity ( #5762 )
...
Add `SemanticBuilder::with_excess_capacity` method to request that `SemanticBuilder` over-allocate space in `Semantic`'s `Vec`s.
Use this method to reserve 200% extra capacity for transformer to create more scopes, symbols and references.
200% is an unscientific guess of how much extra capacity is required. Obviously it depends on what transforms are enabled and content of the source code.
2024-09-14 15:02:16 +00:00
oxc-bot
bd48dfbf8b
release(crates): v0.29.0 ( #5763 )
...
## [0.29.0] - 2024-09-13
- 71116a1 index: [**BREAKING**] Remove ability to index `IndexVec` with
`usize` (#5733 ) (overlookmotel)
- c3dd2a0 ast: [**BREAKING**] Revert: reduce byte size of
`TaggedTemplateExpression::quasi` by `Boxing` it (#5679 ) (#5715 )
(overlookmotel)
### Features
- 953fe17 ast: Provide `NONE` type for AST builder calls (#5737 )
(overlookmotel)
- a362f51 index: Add `IndexVec::shrink_to` (#5713 ) (overlookmotel)
- e968e9f minifier: Constant fold nullish coalescing operator (#5761 )
(Boshen)
- 6bc13f6 minifier: Add `MinimizeConditions` pass (#5747 ) (Boshen)
- 805fbac oxc_cfg: Better control flow graph dot dot repr (#5731 )
(IWANABETHATGUY)
- f3baa49 semantic: Add `SemanticBuilder::with_stats` (#5757 )
(overlookmotel)
- 7fa0cb3 semantic: Expose `Stats` (#5755 ) (overlookmotel)
### Bug Fixes
- 8ff013a minifier: Handle dce CallExpression::callee (#5752 ) (Boshen)
- 608b7d3 napi/transformer: Refresh plugin doesn't work even after
passing the refresh option (#5702 ) (Dunqing)
- 042afa9 syntax: Correctly check for valid `RedeclarationId`s (#5759 )
(overlookmotel)
- 77d9170 transformer/react: IsStaticChildren should be false when there
is only one child (#5745 ) (Dunqing)
### Performance
- 333e2e0 index: Remove `Idx` bounds-checks from `first` + `last`
methods (#5726 ) (overlookmotel)
- d18c896 rust: Use `cow_utils` instead (#5664 ) (dalaoshu)
### Refactor
- 2890c98 minifier: Add tests for `remove_syntax` (#5749 ) (Boshen)
- 9a9d8f6 minifier: Replace `self.ast` with `ctx.ast` (#5748 ) (Boshen)
- 746f7b3 minifier: Align code with closure compiler (#5717 ) (Boshen)
- 21e2df5 minifier: Replace `VisitMut` with `Traverse` for inject and
define plugins (#5705 ) (Boshen)
- 4bdc202 rust: Remove some #[allow(unused)] (#5716 ) (Boshen)
- a35fb14 semantic: `Stats::assert_accurate` take `self` (#5758 )
(overlookmotel)
- 4b896f1 semantic: Make `Stats` `Copy` (#5756 ) (overlookmotel)
- b4b460f semantic: `Stats` store counts as `u32` (#5754 )
(overlookmotel)
- 667170c semantic: Rename `Counts` to `Stats` (#5753 ) (overlookmotel)
- cc0408b semantic: S/AstNodeId/NodeId (#5740 ) (Boshen)
- 7dfcdfc semantic: Remove `more-asserts` dependency (#5739 )
(overlookmotel)
- 6436524 semantic: Fix dead code warning in release mode (#5728 )
(overlookmotel)
- e02621d semantic: Re-order use statements (#5712 ) (overlookmotel)
- ac6203c semantic: Move `Counts` code into counter module (#5710 )
(overlookmotel)
- 339fcfc semantic: Rename `Counts` in transform checker (#5709 )
(overlookmotel)
- d8ec781 semantic: Remove `record_ast_node` call for `Program` (#5701 )
(overlookmotel)
### Styling
- 1857ff0 semantic: Rename vars for node IDs (#5699 ) (overlookmotel)
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>
2024-09-13 21:43:23 +08:00
overlookmotel
a35fb14454
refactor(semantic): Stats::assert_accurate take self ( #5758 )
...
Improve API of `Stats::assert_accurate`.
2024-09-13 12:19:55 +00:00
overlookmotel
f3baa49662
feat(semantic): add SemanticBuilder::with_stats ( #5757 )
...
Add `SemanticBuilder::with_stats` method to optionally pass in a `Stats` object. If `Stats` are provided, `SemanticBuilder` skips the AST traversal.
2024-09-13 12:19:55 +00:00
overlookmotel
4b896f1494
refactor(semantic): make Stats Copy ( #5756 )
...
`Stats` type is small. Make it `Copy`.
2024-09-13 12:19:54 +00:00
overlookmotel
7fa0cb3861
feat(semantic): expose Stats ( #5755 )
...
Expose `Stats` type, and provide a method `Semantic::Stats` to obtain them.
Note: If we move counting into parser later, parser can use this same `Stats` type (we'd need to move it into `oxc_parser` or `oxc_ast` crate, but `oxc_semantic` can still re-export it.
2024-09-13 12:19:54 +00:00
overlookmotel
b4b460f425
refactor(semantic): Stats store counts as u32 ( #5754 )
...
These counts can never exceed `u32`, so reduce size of these fields.
2024-09-13 12:19:54 +00:00
overlookmotel
667170cbfc
refactor(semantic): rename Counts to Stats ( #5753 )
...
Pure refactor. Just rename the type.
2024-09-13 12:19:54 +00:00