Dunqing
134fb2228d
fix(isolated-declarations): preserve unresolved parameter types ( #25909 )
...
#25292 made isolated declaration emit report a false TS9025 for a defaulted parameter whose annotation is an indexed access type. This breaks Vite's `UserConfig["base"]` case when Rolldown upgrades Oxc, even though the indexed property already includes `undefined`.
Oxc's isolated declaration emitter has no type checker, so it cannot safely resolve indexed accesses, type references, conditional types, or similar annotations. This change uses a syntax-only classification: widen or diagnose types whose syntax is conclusive, and preserve checker-dependent types rather than emit an unstable error. The union/intersection rules retain the distinct behavior of `any`, `never`, `unknown`, and `void`, and an explicit `undefined` union member is never duplicated.
Regression coverage includes the Rolldown/Vite case and a compact matrix of the relevant type algebra. The implementation and tests were reduced to one commit after review.
Validated with the isolated-declarations tests, strict Clippy, the all-features workspace suite, lint, docs, AST generation, and TypeScript 5.6.1-rc/6.0.3 type-algebra checks. The full local `just ready` run stopped only at a runner-dependent source-map snapshot because the repository expects Node 26.5.0 and this machine has 25.8.1; the remaining suite passed with that and the known terminal-color snapshot group skipped.
Follow-up to #25292 . Related Rolldown failure: https://github.com/rolldown/rolldown/actions/runs/32158377691/job/95782148042?pr=10707
Disclosure: this change was prepared and verified with AI assistance (Codex).
2026-08-19 07:36:24 +00:00
camc314
53f9295ac5
fix(isolated-declarations): preserve undefined for defaulted any ( #25292 )
...
## Summary
- emit `any | undefined` for default-initialized `any` parameters followed by required parameters
- add a regression fixture for #25290 and update the existing parameter snapshot
- preserve the existing handling of `unknown`
Closes #25290
2026-08-17 09:43:42 +00:00
camc314
b846abc2a4
fix(isolated-declarations): handle ambient expando properties ( #25655 )
...
## Summary
- treat value declarations in ambient namespaces as implicitly exported for expando-function validation
- preserve local versus exported namespace visibility to match TypeScript declaration merging
- add regression coverage for accepted ambient value declarations and rejected local or type-only declarations
## TypeScript compatibility
The regression fixture was checked with TypeScript 6.0.3. TypeScript and Oxc produce TS9023 only for the exported-function/local-namespace mismatch and the type-only namespace property.
Closes #24975
2026-08-17 02:25:03 +00:00
Boshen
030857b509
refactor(diagnostics): update oxc-miette to v4 ( #25395 )
...
Remove the miette `Report` wrapper and update oxc-miette to v4's narrowed diagnostic and source protocol.
AI-assisted by OpenAI Codex.
2026-08-10 07:48:02 +00:00
camc314
468b970613
fix(isolated-declarations): strip re-export attributes ( #25090 )
...
## Summary
- transform declaration-less named exports instead of cloning them unchanged
- preserve re-export specifiers, source, and type modifiers while omitting import attributes from declaration output
- retain existing empty-export marker behavior
Stacked on #25089 .
2026-07-29 17:25:26 +00:00
camc314
ecc666a4b1
test(isolated-declarations): cover re-export syntax ( #25089 )
...
## Summary
- cover statement-level and specifier-level type-only re-exports
- cover string-named export specifiers
- cover re-exports using import attributes
2026-07-29 16:54:39 +00:00
camc314
99b1dc4773
fix(isolated-declarations): separate static accessors ( #24716 )
...
## Summary
- keep static and instance accessors with the same key in separate inference pairs
- retain property-key normalization while adding staticness to the pairing identity
- cover both instance-getter/static-setter and static-getter/instance-setter directions
## Root cause
Accessor pairing identified entries by property key alone. A same-named accessor in the opposite staticness domain could therefore provide an inferred type, even though TypeScript treats the static and instance properties independently.
[TS Playground](https://www.typescriptlang.org/play/?isolatedDeclarations=true )
Current behaviour (oxc is before, ts (correct) is after.
```diff
@@ -1,8 +1,8 @@
declare class InstanceGetterStaticSetter {
- get value(): string;
+ get value();
static set value(value: string);
}
declare class StaticGetterInstanceSetter {
- static get value(): number;
+ static get value();
set value(value: number);
}
```
2026-07-20 13:31:53 +00:00
Cameron
0e9b46079a
fix(isolated-declarations): normalize accessor keys ( #24690 )
...
## Summary
- normalize equivalent static accessor keys before getter/setter pairing
- retain structural matching for computed symbol keys
- cover identifier/string and numeric/template accessor pairs
## Root cause
Accessor pairing compared the AST key nodes structurally, so equivalent
JavaScript property names expressed with different key syntax did not
match.
[TS
Playground](https://www.typescriptlang.org/play/?isolatedDeclarations=true#code/MYGwhgzhAEDCD2BbADgVwC4FMAmBldATgJYB2A5gOKbpYHQDeAUNNGddAG5giqYAUASgbMW0AtVQES0AERcemGQG4RAXxER2AbTndeMgLp8OQpi3XrGoSDAQoMOfMXK5qtAEzCWbdNB3B4VBJ0Q0EvUXF0SWkZEnh0AFp0AAtMBOxMawIwdCJ4EiSAT2RFFXMNdgCg9GMALmgSVEQAI0wCUzVGS2soOCQ0LGwAOSa2omAqGjaAZnCfPwBGIw7RMQkpaEJeMuh1Fk1fLQADBaOjE3CLRiA )
Current behaviour (oxc is before, ts (correct) is after.
```diff
@@ -1,12 +1,12 @@
declare class ComputedStringGetter {
get value(): string;
- set ["value"](v);
+ set ["value"](v: string);
}
declare class ComputedStringSetter2 {
- get ["count"](): string;
+ get ["count"](): number;
set count(v: number);
}
declare class ComputedNumericGetter3 {
get [1](): boolean;
- set [`1`](v);
+ set [`1`](v: boolean);
}
```
2026-07-20 11:13:55 +01:00
camc314
a2ef382fe6
fix(isolated-declarations): reject window.Symbol as global symbol reference ( #24689 )
...
## Summary
- Align computed property validation with TypeScript: allow Symbol and globalThis.Symbol keys, but reject window.Symbol keys.
- Add an isolated-declarations regression fixture covering all three forms.
[TS Playground](https://www.typescriptlang.org/play/?isolatedDeclarations=true#code/FAUwHgDg9gTgLgAgMYBsCGBnDCDKBPAWwCMoUBpEPDARgQG9gEEBtfY0gOgEs4QY04sALoAKAJQAuBAEle-QTAA8AVwB2Aa1VQA7qoB89RkwQwQcZTFUshrQiRTc5A4eIDcRgL7Av4aPGToWLh2pBRUAEyGTMwA5ihQRGgoACoAFlwYHGz2jnzOMKKSMk4KKhpaugYMxiZmFlbMNtmcPHkKhe5MXj6QsIiomNjN5JQYAMxRLNpcqgAmOlkhDq3yLkWybbBlmjr6k0ym5pbWtuzLJWudCN1AA )
2026-07-19 21:21:11 +00:00
camc314
b14d52e647
refactor(parser): move require after optional param check to parser ( #24600 )
...
## Summary
- report TS1016 while parsing formal parameter lists
- preserve initialized-parameter and rest-parameter behavior
- remove the equivalent semantic check and diagnostic
- update parser and semantic coverage snapshots
Follows #24596 , which has now merged.
2026-07-16 15:50:50 +00:00
camc314
f17514b21c
fix(isolated-declarations): emit const readonly fields as types ( #24288 )
...
## Summary
Fixes #24284 .
TypeScript 6.0.3 emits bare readonly literal class fields as value initializers, but emits readonly `as const` literal fields as type annotations. Oxc previously unwrapped `as const` in the readonly class-property initializer path, so `static readonly A = "a" as const` became `static readonly A = "a";` instead of `static readonly A: "a";`.
This changes the readonly class-property handling to preserve value initializers only for bare literals. Const assertions now flow through the existing const-expression type conversion.
2026-07-08 10:55:22 +00:00
Boshen
777f02ae10
refactor(diagnostics)!: return a Diagnostics type instead of Vec<OxcDiagnostic> ( #23217 )
...
## Summary
Introduces `oxc_diagnostics::Diagnostics` — a `Vec<OxcDiagnostic>` newtype that knows the difference between errors and warnings — and makes it the standard diagnostics return value across oxc.
- **New type**: `Diagnostics` with `has_errors()`, `has_warnings()`, `errors()`, `warnings()`, plus `Vec`-like ergonomics (Deref, `IntoIterator`, `Extend`, `From`/`Into<Vec>`) so most call sites are unchanged.
- **Return types**: `ParserReturn`, `SemanticBuilderReturn`, `IsolatedDeclarationsReturn`, the React Compiler `TransformResult`/`LintResult`, and `TransformerReturn` now expose `diagnostics: Diagnostics` instead of `errors: Vec<OxcDiagnostic>` (the React Compiler's separate `errors`/`warnings` are merged into one severity-tagged list).
- **Behaviour**: a React Compiler **error** now stops the transform (no output), while **warnings** flow through and the transform continues. `compile()` aborts codegen only when `diagnostics.has_errors()` — warnings alone no longer abort (previously any diagnostic did).
## Breaking change
Consumers reading `*.errors` on these return values must read `*.diagnostics`. React Compiler consumers that read `.errors`/`.warnings` separately should use `diagnostics.has_errors()` / `diagnostics.errors()` / `diagnostics.warnings()`.
Parser/semantic/isolated-declarations fatality is otherwise unchanged. Builds on the React Compiler transform feature (#23201 ).
🤖 Generated with [Claude Code](https://claude.com/claude-code )
2026-06-10 14:46:52 +00:00
Boshen
8b631bfeca
fix(codegen): remove stray space before mapped type value colon ( #23010 )
...
## What
`TSMappedType` printed a `soft_space` immediately before the value colon, so the colon was spaced off from the key:
| Input | Before | After |
| --- | --- | --- |
| `{ [K in U]: V }` | `{ [K in U] : V }` | `{ [K in U]: V }` |
| `{ [K in U]?: V }` | `{ [K in U]? : V }` | `{ [K in U]?: V }` |
| `{ -readonly [K in U]-?: V }` | `{ -readonly [K in U]-? : V }` | `{ -readonly [K in U]-?: V }` |
Every other member colon (object types, interfaces) is printed as `key: value`; mapped types now match. Minified output was already correct (`[K in U]?:V`).
The stray `print_soft_space()` before `print_colon()` is removed.
2026-06-06 11:23:46 +00:00
camc314
49e63f77a0
fix(isolated-declarations): require annotations for satisfies initializers ( #22898 )
...
Fixes an isolated declarations gap where exported variables initialized with a `satisfies` expression were being inferred instead of requiring an explicit annotation.
TypeScript reports TS9010 for cases like:
```ts
export const x = { a: 1 } satisfies { a: number };
```
but Oxc previously emitted an inferred declaration. This changes isolated declaration inference so `satisfies` initializers do not unwrap to the inner expression for variable type inference, matching TypeScript’s behavior.
Added a regression fixture covering:
- object literal `satisfies` initializer
- primitive `satisfies` initializer
- explicitly annotated `satisfies` initializer, which should still emit normally
[TypeScript playground](https://www.typescriptlang.org/play/?isolatedDeclarations=true#code/KYDwDg9gTgLgBAYwgOwM7xHAvHA3nAQwC44BGOAXzlQJgEtUAzO4VPQk5AVwFsAjYFEoBuAFBA )
2026-06-03 04:08:02 +00:00
camc314
8c936018d1
fix(isolated-declarations): allow unknown enum initializer in non-const enum ( #22900 )
...
Fixes an isolated declarations diagnostic mismatch for enum initializers.
TypeScript allows runtime enum initializers under `--isolatedDeclarations` for regular enums and emits the declaration without initializer values:
[TS playground](https://www.typescriptlang.org/play/?isolatedDeclarations=true#code/KYDwDg9gTgLgBMAdgVwLZwEIEMAmBRFdAbwCg44BBOAXjgFksYALAOii0RwlQAoBKADRlMNSnADUcAIxCAviRKhIsOAGMIiAM7wkaTLgDCG7QT2lyVWg2ZsOXXoOEZRVSTJLygA )
```ts
export enum BadEnum {
A = Math.random(),
B = A + 1,
}
```
```ts
export declare enum BadEnum {
A,
B
}
```
Oxc already emitted the same declaration shape, but also reported TS9020. This PR narrows that diagnostic behavior so regular enum runtime initializers are omitted without an isolated declarations error.
For `const enum`, TypeScript still reports `TS2474` because const enum initializers must be constant expressions:
[TS playground](https://www.typescriptlang.org/play/?isolatedDeclarations=true#code/KYDwDg9gTgLgBMAdgVwLZwEIEMAmBRFdAbwCg44BBOAXjgFksYALAOii0RwlQAoBKADRlMNSnADUcAIxCAviRKhIsOAGMIiAM7wkaTLgDCG7QT2lyVWg2ZsOXXoOEZRVSTJLygA )
```ts
export const enum BadConstEnum {
A = Math.random(),
B = A + 1,
}
```
This PR keeps that error behavior aligned by reporting `TS2474` for non-constant `const enum` initializers.
2026-06-03 02:37:22 +00:00
camc314
070eb9e66f
fix(isolated-declarations): omit public accessor modifier ( #22880 )
...
Accessor property declaration emit preserved an explicit `public` modifier because it passed `property.accessibility` through unchanged. Property and method declarations already normalize public accessibility away with `transform_accessibility`, so accessors should use the same path.
This applies `Self::transform_accessibility` when emitting accessor properties and adds a fixture case for `public accessor i!: string`, which now snapshots as `accessor i: string;`.
Stacked on #22878 .
2026-06-01 14:07:33 +00:00
camc314
a3ae099ff3
fix(isolated-declarations): omit definite assertion from private declarations ( #22878 )
...
Declaration emit currently preserves the definite assignment marker on private modifier class fields after erasing their type annotation. That can produce invalid `.d.ts` output like `private _prop!;`, while TypeScript emits the type-erased private member as `private _prop;`.
This clears the emitted `definite` flag when isolated declaration emit type-erases private modifier properties, and uses the same helper for accessor properties. The regression fixture covers the issue sample, and the existing accessor fixture now covers the same behavior for `private accessor`.
fixes #22877
2026-06-01 13:57:23 +00:00
Dunqing
48967e8325
fix(isolated_declarations): drop required type check for private parameter properties on private constructors ( #21515 )
...
## Summary
A private parameter property on a private constructor doesn't need an explicit type annotation:
- The constructor signature is collapsed to `private constructor();` — the parameter is never emitted.
- The parameter-property class member is emitted as `private readonly name;` — type-erased.
Since the parameter's type does not appear in the `.d.ts` output in either place, no type is needed. This matches `tsc --isolatedDeclarations`. Non-private parameter properties on a private constructor still require a type, because the class member keeps the type.
## Example
```ts
export class GreyhoundServer {
private constructor(
private readonly logger = new ConsoleLogger(['greyhound-server']),
) {}
}
```
Before: `TS9011: Parameter must have an explicit type annotation`.
After: no error — emits `private readonly logger;` and `private constructor();`, matching tsc.
## Test plan
- [x] Added snapshot fixtures covering both the no-error case (private param property) and the still-errors case (public param property on private constructor)
- [x] `cargo test -p oxc_isolated_declarations`
Closes #21503 (case 1)
2026-04-20 08:33:55 +00:00
Dunqing
065ce47714
fix(isolated_declarations): collect types from private accessors for paired inference ( #21516 )
...
## Summary
A public (or protected) getter paired with a `private set(v: T)` should get its return type from the setter's parameter annotation — that's the standard `isolatedDeclarations` accessor-pair inference rule ("one annotated side is enough"). Previously, `collect_accessor_annotations` skipped any accessor with a `private` modifier, so the pairing never happened and `TS9009` fired on the untyped getter.
This change:
- No longer skips `private`-modifier accessors when collecting annotations for paired inference.
- For private **setters**, collects the explicit parameter type annotation — same behavior as before for non-private setters (no body inference).
- For private **getters**, only uses an explicit return type annotation. Running body inference would surface errors like `TS9038` on the private accessor's body, which is irrelevant because the private accessor is emitted as a type-erased class member anyway.
## Example
```ts
export class MockProxy {
get isRunning() {
return this._state.isRunning;
}
private set isRunning(val: boolean) {
this._state.isRunning = val;
}
}
```
Before: `TS9009: At least one accessor must have an explicit return type annotation`.
After: no error — emits `get isRunning(): boolean;` and `private set isRunning(value);`, matching tsc.
## Test plan
- [x] Added fixtures for both a public getter + private setter pair and a protected getter + private setter pair
- [x] `cargo test -p oxc_isolated_declarations` — no regression on existing private-accessor snapshots
Closes #21503 (case 2)
2026-04-20 04:51:23 +00:00
camc314
c4a3677ad4
feat(parser): report error for initializer in ambient context ( #19187 )
2026-02-23 20:00:54 +00:00
camc314
3e0e5ba49f
fix(isolated-declarations): align readonly class array initializer diagnostics with tsc ( #19218 )
2026-02-10 14:51:49 +00:00
camc314
a7514e4b25
fix(isolated-declarations): preserve const context in literal type inference ( #19178 )
...
TypeScript:

Us before: (we incorrectly add `readonly` on `a` when `readonly `should only be on the top level object

Us after:

2026-02-10 02:06:13 +00:00
camc314
312e7565e2
fix(isolated-declarations): preserve readonly literal initializers ( #19177 )
...
This is the cause of the current monitor oxc failure
TS's Behaviour:

Us Before:

Us After:
```
export declare class ReadonlyLiteralInitializers {
readonly directTrue = true;
readonly constAssertTrue = true;
writableTrue: boolean;
}
```
2026-02-10 02:06:13 +00:00
camc314
d0ca8d0077
fix(isolated-declarations): skip parenthesis when inferring type ( #19176 )
...
before:

TS
After:
Isolated declaration emit succeeds.
2026-02-10 02:06:12 +00:00
camc314
0600df3c88
fix(isolated_declarations): only print jsdoc comments ( #17748 )
...
fixes https://github.com/oxc-project/oxc/issues/17666
2026-01-08 02:56:38 +00:00
camc314
ab5e4ca39f
fix(isolated-declarations): strip default values from rest parameter binding patterns ( #17602 )
...
Closes #17598
2026-01-03 15:28:36 +00:00
Copilot
f5646872a7
fix(isolated-declarations): preserve variable declarations when type with same name is referenced in implements clause ( #16328 )
...
- [x] Understand the issue: variable declarations with shadowed type
names are dropped when the type is referenced in implements clause
- [x] Identify root cause: `add_reference` and `resolve_references` were
overwriting flags instead of combining them
- [x] Implement fix: use bitwise OR to combine `KindFlags` when adding
references and merging scopes
- [x] Add test case to fixtures (extended shadowed.ts with issue #10996
test case)
- [x] Run tests and update snapshots
- [x] Run code review
- [x] Run CodeQL security check (no issues found)
- [x] Verify fix manually with original issue example
- [x] Reverted .gitignore change per reviewer feedback
## Summary
This PR fixes issue #10996 where variable declarations with shadowed
type names were incorrectly dropped when the type was referenced in a
class `implements` clause.
### Problem
When a variable name is shadowed by a type alias and that type is
referenced in `implements`, the variable declaration was missing from
`.d.ts` output.
### Root Cause
`ScopeTree` used `HashMap::insert()` which overwrites reference flags.
When a name had both `KindFlags::Value` (from `typeof Test2`) and
`KindFlags::Type` (from `implements Thing<Test2>`), only the last one
was preserved.
### Fix
Changed `add_reference()` and `resolve_references()` to combine flags
using bitwise OR (`|=`) instead of overwriting.
<!-- START COPILOT CODING AGENT SUFFIX -->
<details>
<summary>Original prompt</summary>
>
> ----
>
> *This section details on the original issue you should resolve*
>
> <issue_title>[isolatedDeclarations] variable emit is dropped if the
variable is shadowed as a type name and the type is part of a class
implements interface</issue_title>
> <issue_description># Repo
>
> ```ts
> export interface Thing<T> {}
>
> /** WORKS */
>
> const Test1 = 'test1' as const;
> export type Test1 = typeof Test1;
> export class Class1 {
> readonly id: 'test1' = Test1;
> }
>
> /** DOES NOT WORK */
>
> const Test2 = 'test2' as const;
> export type Test2 = typeof Test2;
> export class Class2 implements Thing<Test2> {
> readonly id: 'test2' = Test2;
> }
> ```
>
> # Expected
>
> ```ts
> export interface Thing<T> {
> }
> /** WORKS */
> declare const Test1: "test1";
> export type Test1 = typeof Test1;
> export declare class Class1 {
> readonly id: 'test1';
> }
> /** DOES NOT WORK */
> declare const Test2: "test2";
> export type Test2 = typeof Test2;
> export declare class Class2 implements Thing<Test2> {
> readonly id: 'test2';
> }
> export {};
> ```
> [ts
playground](https://www.typescriptlang.org/play/?#code/KYDwDg9gTgLgBASwHY2FAZgQwMbDgFQAtkBzAHnwD44BvAXwCgGB6AKlbgHUB5AJQGkAynFbMm2CEgDO8fMBkBGOAF44AclSK1cTFLgTpMANxxmzODGJ6SwGHuABbBDFQATBqEiwLATzB45RRVffwh0AnkYBSMPcGh4bAAbXT0AYWSpKSUaBjg4KGBMV0lEn0RXAC51TSjtVUComMYWdjgAEW4AUWEAOW58Lj5+ETEGAxkImQAmYI1Iqe1dfUkZEzM4Yvk4JAh4G3hHZzdYr3gYPwD54PPQ8IapmM94-Qy015mEBzBEx2AUPSIpAo82oOTyBSKJTKCEq1XmdUmMAeDGaQA )
>
> # Actual
>
> ```ts
> export interface Thing<T> {}
> /** WORKS */
> declare const Test1: "test1";
> export type Test1 = typeof Test1;
> export declare class Class1 {
> readonly id: "test1";
> }
> export type Test2 = typeof Test2;
> export declare class Class2 implements Thing<Test2> {
> readonly id: "test2";
> }
> export {};
> ```
> [oxc
playground](https://playground.oxc.rs/#eNp1VE1PGzEQ/SuWL5UQVSBSJRRKpQqIVJUSSqJyycXZnU0MXntrzxKiKP+9z5u1idr0ktjz+ebN825lIUeS3hrnWWjL5CtVkJittF1+nn0R293czu3g5EQ8TR6/T8XJIN4LZwOLGQU+F1fiA8fDB6GC6ByXYjAQvNJBLImDoFozUzm3fRfeNGjQ58aLq/bXyxxSGBWCuI6/52I7t0J4UqWzZiN0OcoNr3JeRnkzuZ2K+8msg/sP2mFCO/wLbekoCOs4Iv4/4Jh+AHh4FPBQ6LoxVJPF7D2PMRhcHh8EWPaDxHrdIPJUOjnaSt/a+GewFzli39KprJyvFdB5OaqUCbCwVzZEc7bo4IzCADcEWF6xxpgpf73S6Nlgxzm8VnZp3q+FqxtPARm9IRSugXufHzb1wpl0K6plH7Y7lY3yIeLaQk5MNqAtpMXhDeMoY9z6kbj1dtJy0CWNW1tEZKlU7En+lR6UR26ydnm/Lr5Z9hoVi+wIBNisi1vvne+twBCp6jDgfEDVVraBZmrxPhSrxZMueSVHw1NJtpxUd9piSmkqwG3QjXv/xRm6YYuGfraO33l6Dm/TI+bf8fbgXYNeUoWPlqikEjWxJw14y2tX1yr6jIEVc+g8LGZZp/nhX6tNQMjCq+KFeIqlIT0FJ6uqaY+87+8Wz1Twk1cNaiRSY6MO61cGkYsWCMkfpIGtLKM9X6w8nkL8NITh2fknFACDN1QhZ+x8J/SxJlPmheAhkNdR9cpAeA66y4uBF08qW38Qq1IxSOi3dlywWxkAtsHuyVsFzSWohStpSd3TsHHHWY7PoXT4nPVsWrznrlayGFqm2K5K0nkUS3oEmNw1d/RKuegLUXMPlpN2ulTo0ZkxtBkzXskvXDjgUtu4g+jKpx3MZUdfNOfTLtojzWmm3R88D/Yg )
>
> Note the missing emit of `declare const Test2:
"test2";`</issue_description>
>
> ## Comments on the Issue (you are @copilot in this section)
>
> <comments>
> </comments>
>
</details>
- Fixes oxc-project/oxc#16314
<!-- START COPILOT CODING AGENT TIPS -->
---
✨ Let Copilot coding agent [set things up for
you](https://github.com/oxc-project/oxc/issues/new?title=✨ +Set+up+Copilot+instructions&body=Configure%20instructions%20for%20this%20repository%20as%20documented%20in%20%5BBest%20practices%20for%20Copilot%20coding%20agent%20in%20your%20repository%5D%28https://gh.io/copilot-coding-agent-tips%29%2E%0A%0A%3COnboard%20this%20repo%3E&assignees=copilot )
— coding agent works faster and does higher quality work when set up for
your repo.
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
Co-authored-by: Dunqing <29533304+Dunqing@users.noreply.github.com >
2025-12-01 21:29:46 +08:00
sapphi-red
b3d6f45d37
test(all): check parse errors existence ( #15865 )
...
Added `assert!(ret.errors.is_empty());` in many places so that invalid inputs are caught properly.
2025-11-19 13:56:55 +00:00
copilot-swe-agent
7d1ebadbb5
fix(isolated-declarations): incorrect nested namespace output in isolated declarations ( #15800 )
...
Dotted namespace syntax `export namespace X.Y.Z {}` was incorrectly transformed to `export declare namespace Y.Z.Z {}` instead of `export declare namespace X.Y.Z {}`.
**Root cause:** Variable shadowing in `transform_ts_module_declaration`. When processing nested `TSModuleDeclaration` bodies, the pattern match variable `decl` shadowed the function parameter, causing the inner namespace name to be used instead of the outer one.
**Changes:**
- Renamed pattern match variable from `decl` to `inner_decl` to preserve access to outer declaration's identifier
- Added test coverage for dotted namespace syntax with varying nesting depths
**Example:**
```ts
// Input
export namespace X.Y.Z {}
// Before: Y.Z.Z (incorrect)
// After: X.Y.Z (correct)
export declare namespace X.Y.Z {
export {};
}
```
<!-- START COPILOT CODING AGENT SUFFIX -->
<details>
<summary>Original prompt</summary>
>
> ----
>
> *This section details on the original issue you should resolve*
>
> <issue_title>Isolated declarations: Incorrect output for nested `namespace`</issue_title>
> <issue_description>Input:
>
> ```ts
> // _____
> export namespace X.Y.Z {}
> ```
>
> Isolated declarations output:
>
> ```ts
> // _____
> export declare namespace Y.Z.Z {
> export {};
> }
> ```
>
> [Playground](https://playground.oxc.rs/#eNptU01v2zAM/SuBzlnRFRhQ5Da0CzCgW7J1WLdhF1pmXKWy6FF00sLIfx/lWEoK9GT5Ufx4j0+DsWZh8LkjllmAFmMHFme/Ln5f/JkNh7/BzA2ZxWC4D+njXRCz2ICPODcb4hZEkAsiDCEmuCAukgfB+hatBwZxFKJZCPca2z86OTYs11sIjT/9Wmo7xqgZExAtdRo+5seXtiKf/+ymma4d5qYDjmmuQbkJhqhtladEpQPe0/47Ss9h1Ut0NS77YNNguVJqibzDNbCmZnTM+3n9OQg7LWhLIKJOLc5+YiaeUB0hSTWOoOczpQbTR/wB1YmTQPXgank0i6u5wVCvNncuKEnjNzpup91kil9fajeXFPrWk5xk2sbn+zfgf+lvzdRpLwPxXUCssdaauian4zU31LaQYt4rqjxcIatc9pm/xvfwkrSrGOwTyr3uTNPz5YyqfY6TT/2p2qKVB4ZOa2RRU6Nx1o+iQla9Toj8Kk3diOxaDAJ+pUcQ4jVFd1xRUsiopMVqR1EFuEG1psF4dfn+g3ZRmW9xo4WXxDceYlw69HXZ2nkXNSeNbU7R1klBv6BADaJKTat929SDicqoU4MgB1BfZjNaqrHB8f2EZIRi2W2sSd/fJHkIJGOtjHhs8t2xSn4LyVH5oShz6u5wh6XoE2L3Nb3k8wHUtOSXauCUsUOuKGbBE5+QFpVC5XRQuB7lS3A5HRKeZM6cDv8BbLGFnw== )
>
> Maybe this code is the cause?
>
> https://github.com/oxc-project/oxc/blob/4608549fc7715ee76c4a6d7a78069ff339f52267/crates/oxc_isolated_declarations/src/lib.rs#L521-L523
>
> Looks fishy! Shouldn't it walk down to find the nested `TSModuleBlock` when `decl.body` is a `TSModuleDeclarationBody::TSModuleDeclaration`?</issue_description>
>
> ## Comments on the Issue (you are @copilot in this section)
>
> <comments>
> </comments>
>
</details>
- Fixes oxc-project/oxc#15729
<!-- START COPILOT CODING AGENT TIPS -->
---
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more [Copilot coding agent tips](https://gh.io/copilot-coding-agent-tips ) in the docs.
2025-11-18 03:39:03 +00:00
Copilot
2c23e15fc0
fix(isolated-declarations): incorrectly dropping namespace even if it is being referenced ( #15123 )
...
When an exported type references a namespaced type (e.g., `export type A
= Foo.Bar`), the namespace declaration was being dropped from the
output, causing the type reference to resolve to `any`.
```typescript
// Input
export type A = Foo.Bar;
namespace Foo {
export type Bar = "bar"
}
// Before: namespace dropped
export type A = Foo.Bar;
// After: namespace included
export type A = Foo.Bar;
declare namespace Foo {
type Bar = "bar";
}
export {};
```
## Changes
- **`declaration.rs`**: Changed namespace inclusion check from
`has_value_reference()` to `has_reference()` to account for
type-position references. This aligns with enum handling, which also
uses `has_reference()` since both can serve dual roles as types and
values.
- **Test coverage**: Added test cases for simple, nested, and multiple
namespace references in various type positions (aliases, unions,
interfaces).
## Technical Details
Namespaces are bound with `KindFlags::All` (both type and value), but
the transform logic was only checking for value references. Type
references like `Foo.Bar` are tracked as `KindFlags::Type` through
`visit_ts_type_name()`, so the previous check excluded legitimately
referenced namespaces.
<!-- START COPILOT CODING AGENT SUFFIX -->
<details>
<summary>Original prompt</summary>
>
> ----
>
> *This section details on the original issue you should resolve*
>
> <issue_title>Isolated declarations emit drops namespaced
types</issue_title>
> <issue_description>When an exported type references a namespaced one,
the namespace is not included in the output.
>
> ```ts
> // This ends up being `any`
> export type A = Foo.Bar;
>
> namespace Foo {
> export type Bar = "bar"
> }
> ```
> emits:
> ```ts
> // This ends up being `any`
> export type A = Foo.Bar;
> ```
>
>
[playground](https://playground.oxc.rs/#eNptVE1v2zAM/SuCThuQtUNPRYYd+rEAA7q1W4v1kkNpm07VyqJH0UmDIP99lGM5CdZLKz+RfOTjUza2tFN7emoenl00GKpoutYU6MLCPEFYP5l5wLeWWIysWzQX5quZEZ1cAn+Zh3kI0GBsocSEms08GHMYrmGaMLcF8Nym+G36k+lWxK/R1C7gMcml5qQD1anq2Ylm/092dsRWd6EUR8Fo7IePU7MkV5mNsm3txJKdbix3If3zLoid1uAjTmxN3IAI8ogIQ4gJHhEXyYNgdY2lB4ZEEu1UuNO71bOTXUdjeANh4fefJTUtY9SMAYgltXq9y4/rpiCfv8p6MYRtJ7YFjqmvjcU3wRCVVhclUccB72n1G6XjcNtJdBXOhulzpUSJvMQ7YE3NaJ/35/x7EHZasBwvImrX4spvzMQDqi0kqfoW9Hyg1MZ2ER+g2M8kUDy6Sp7t9Gxi1UO39Y3uVNv1tbbbKpsM9+eflU295fFXR7KX6SW+3b8D/01fd0ytclmInwJihZXW1DU5bW9xRU0D6c57RXUONw6rs6zy/Hq/gnXSrmAoX1HudWeanoMzqv7adT7wU/GCpTwytFoji5qI+l4vRIUsOu0Q+ShNPYnsGgwC/laPIMR3FN1uRUkhq5KOVtuJKsALVGtajPoYRFlU5mtMr2NGfOUhxplDX41bO2RRc1JPs79tnIzoDxSoQFSpYbXvm3pjo07UqkGQA6gvsxlLqnCB/fsJyQijZV9iRfoDMkgeAklfKyMeFzm2r5LfQnJUfig6ObU3uMSx6Cti+zM99cMG1LTkZ2rglLFELihmwdM8IS0qXY2nrcJVL1+Cx9M24UnmPNP2H1mEya8= )</issue_description>
>
> <agent_instructions>We should look into the `oxc_isolated_declaration`
crate to fix this bug.</agent_instructions>
>
> ## Comments on the Issue (you are @copilot in this section)
>
> <comments>
> </comments>
>
</details>
- Fixes oxc-project/oxc#15028
<!-- START COPILOT CODING AGENT TIPS -->
---
💬 We'd love your input! Share your thoughts on Copilot coding agent in
our [2 minute survey](https://gh.io/copilot-coding-agent-survey ).
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
Co-authored-by: Dunqing <29533304+Dunqing@users.noreply.github.com >
2025-10-31 14:14:37 +08:00
copilot-swe-agent
8f533aaceb
fix(codegen): correct CRLF handling in comment processing ( #13169 )
...
The oxc-transform's isolated declaration feature was incorrectly handling Windows line endings (`\r\n`) in comments, generating double newlines in the output. Consider:
```typescript
import { isolatedDeclaration } from 'oxc-transform'
console.log([
isolatedDeclaration('a.ts',
// Simulates windows file line-ending.
[
'/**',
' * Comment.',
' */',
'export const a: number = 1;'
].join('\r\n')
).code
])
// Before: [ '/**\n\n* Comment.\n\n*/\nexport declare const a: number;\n' ]
// After: [ '/**\n* Comment.\n*/\nexport declare const a: number;\n' ]
```
## Root Cause
The issue was in the comment processing logic in `oxc_codegen/src/comment.rs`. The `split(is_line_terminator)` function treats both `\r` and `\n` as separate line terminators, causing `\r\n` sequences to split incorrectly with empty strings between them, leading to double newlines in the output.
## Solution
Implemented an allocation-free approach using a custom `LineTerminatorSplitter` iterator that:
1. Handles CRLF sequences correctly by treating `\r\n` as a single line terminator
2. Eliminates performance overhead from string allocations during comment processing
3. Processes line terminators on-demand without creating temporary strings
This approach provides better performance compared to the previous normalization function while correctly handling Windows line endings.
## Additional Changes
- Converted all single-line block comments (`/** comment */`) to multiline format in test fixtures to better verify the CRLF fix
- Updated corresponding test snapshots to reflect the improved comment formatting
## Testing
- Added comprehensive tests covering Windows line endings, mixed line endings, and standalone CR handling
- All existing tests continue to pass (codegen, isolated declarations, transform)
- Verified the exact reproduction case from the issue works correctly
- Confirmed zero allocation overhead in comment processing
Fixes #13059 .
<!-- START COPILOT CODING AGENT TIPS -->
---
💬 Share your feedback on Copilot coding agent for the chance to win a $200 gift card! Click [here](https://survey.alchemer.com/s3/8343779/Copilot-Coding-agent ) to start the survey.
2025-08-18 11:50:39 +00:00
leaysgur
306b023302
feat(isolated-declarations)!: Rewrite declare module X to declare namespace X ( #12845 )
...
May fix #12844
At first glance, it looked like a simple change, so I created a PR.
But sorry, I think I'm not familiar with the context, so please feel free to close if not appropriate. 😓
2025-08-07 11:54:53 +00:00
Boshen
3eed87a610
fix(codegen): wrap parens for TSUnionType ( #12830 )
2025-08-05 12:17:54 +00:00
renovate[bot]
b4c9e7419f
chore(deps): update crate-ci/typos action to v1.35.1 ( #12811 )
...
This PR contains the following updates:
| Package | Type | Update | Change |
|---|---|---|---|
| [crate-ci/typos](https://redirect.github.com/crate-ci/typos ) | action
| minor | `v1.34.0` -> `v1.35.1` |
---
### Release Notes
<details>
<summary>crate-ci/typos (crate-ci/typos)</summary>
###
[`v1.35.1`](https://redirect.github.com/crate-ci/typos/blob/HEAD/CHANGELOG.md#014---2019-11-03 )
[Compare
Source](https://redirect.github.com/crate-ci/typos/compare/v1.35.0...v1.35.1 )
##### Bug Fixes
- Ignore numbers as identifiers
([a00831c8](https://redirect.github.com/crate-ci/typos/commit/a00831c847b7efd81be520ea9b5d02f70555351f ))
- Improve the organization of --help
([a48a457c](https://redirect.github.com/crate-ci/typos/commit/a48a457cc3ca817850118e2a2fb8b20fecdd40b8 ))
##### Features
- Dump files, identifiers, and words
([ce365ae1](https://redirect.github.com/crate-ci/typos/commit/ce365ae12e12fddfb6fc42a7f1e5ea71834d6051 ),
closes
[#​41](https://redirect.github.com/crate-ci/typos/issues/41 ))
- Give control over allowed identifier characters for leading vs rest
([107308a6](https://redirect.github.com/crate-ci/typos/commit/107308a655a425eb593bf5e4928572c16e6a9bdd ))
##### Performance
- Use standard identifier rules to avoid doing umber checks
([107308a6](https://redirect.github.com/crate-ci/typos/commit/107308a655a425eb593bf5e4928572c16e6a9bdd ))
- Only do hex check if digits are in identifiers
([68cd36d0](https://redirect.github.com/crate-ci/typos/commit/68cd36d0de90226dbc9d31c2ce6d8bf6b69adb5c ))
<!-- next-url -->
[Unreleased]:
https://redirect.github.com/crate-ci/typos/compare/v1.35.1...HEAD
[1.35.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.35.0...v1.35.1
[1.35.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.34.0...v1.35.0
[1.34.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.33.1...v1.34.0
[1.33.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.33.0...v1.33.1
[1.33.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.32.0...v1.33.0
[1.32.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.31.2...v1.32.0
[1.31.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.31.1...v1.31.2
[1.31.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.31.0...v1.31.1
[1.31.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.30.3...v1.31.0
[1.30.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.30.2...v1.30.3
[1.30.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.30.1...v1.30.2
[1.30.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.30.0...v1.30.1
[1.30.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.29.10...v1.30.0
[1.29.10]:
https://redirect.github.com/crate-ci/typos/compare/v1.29.9...v1.29.10
[1.29.9]:
https://redirect.github.com/crate-ci/typos/compare/v1.29.8...v1.29.9
[1.29.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.29.7...v1.29.8
[1.29.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.29.6...v1.29.7
[1.29.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.29.5...v1.29.6
[1.29.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.29.4...v1.29.5
[1.29.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.29.3...v1.29.4
[1.29.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.29.2...v1.29.3
[1.29.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.29.1...v1.29.2
[1.29.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.29.0...v1.29.1
[1.29.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.28.4...v1.29.0
[1.28.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.28.3...v1.28.4
[1.28.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.28.2...v1.28.3
[1.28.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.28.1...v1.28.2
[1.28.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.28.0...v1.28.1
[1.28.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.27.3...v1.28.0
[1.27.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.27.2...v1.27.3
[1.27.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.27.1...v1.27.2
[1.27.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.27.0...v1.27.1
[1.27.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.26.8...v1.27.0
[1.26.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.26.7...v1.26.8
[1.26.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.26.6...v1.26.7
[1.26.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.26.5...v1.26.6
[1.26.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.26.4...v1.26.5
[1.26.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.26.3...v1.26.4
[1.26.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.26.2...v1.26.3
[1.26.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.26.1...v1.26.2
[1.26.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.26.0...v1.26.1
[1.26.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.25.0...v1.26.0
[1.25.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.24.6...v1.25.0
[1.24.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.24.5...v1.24.6
[1.24.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.24.4...v1.24.5
[1.24.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.24.3...v1.24.4
[1.24.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.24.2...v1.24.3
[1.24.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.24.1...v1.24.2
[1.24.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.24.0...v1.24.1
[1.24.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.23.7...v1.24.0
[1.23.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.23.6...v1.23.7
[1.23.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.23.5...v1.23.6
[1.23.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.23.4...v1.23.5
[1.23.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.23.3...v1.23.4
[1.23.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.23.2...v1.23.3
[1.23.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.23.1...v1.23.2
[1.23.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.23.0...v1.23.1
[1.23.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.22.9...v1.23.0
[1.22.9]:
https://redirect.github.com/crate-ci/typos/compare/v1.22.8...v1.22.9
[1.22.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.22.7...v1.22.8
[1.22.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.22.6...v1.22.7
[1.22.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.22.5...v1.22.6
[1.22.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.22.4...v1.22.5
[1.22.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.22.3...v1.22.4
[1.22.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.22.2...v1.22.3
[1.22.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.22.1...v1.22.2
[1.22.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.22.0...v1.22.1
[1.22.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.21.0...v1.22.0
[1.21.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.20.10...v1.21.0
[1.20.10]:
https://redirect.github.com/crate-ci/typos/compare/v1.20.9...v1.20.10
[1.20.9]:
https://redirect.github.com/crate-ci/typos/compare/v1.20.8...v1.20.9
[1.20.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.20.7...v1.20.8
[1.20.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.20.6...v1.20.7
[1.20.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.20.5...v1.20.6
[1.20.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.20.4...v1.20.5
[1.20.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.20.3...v1.20.4
[1.20.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.20.2...v1.20.3
[1.20.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.20.1...v1.20.2
[1.20.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.20.0...v1.20.1
[1.20.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.19.0...v1.20.0
[1.19.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.18.2...v1.19.0
[1.18.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.18.1...v1.18.2
[1.18.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.18.0...v1.18.1
[1.18.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.17.2...v1.18.0
[1.17.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.17.1...v1.17.2
[1.17.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.17.0...v1.17.1
[1.17.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.26...v1.17.0
[1.16.26]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.25...v1.16.26
[1.16.25]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.24...v1.16.25
[1.16.24]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.23...v1.16.24
[1.16.23]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.22...v1.16.23
[1.16.22]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.21...v1.16.22
[1.16.21]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.20...v1.16.21
[1.16.20]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.19...v1.16.20
[1.16.19]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.18...v1.16.19
[1.16.18]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.17...v1.16.18
[1.16.17]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.16...v1.16.17
[1.16.16]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.15...v1.16.16
[1.16.15]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.14...v1.16.15
[1.16.14]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.13...v1.16.14
[1.16.13]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.12...v1.16.13
[1.16.12]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.11...v1.16.12
[1.16.11]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.10...v1.16.11
[1.16.10]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.9...v1.16.10
[1.16.9]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.8...v1.16.9
[1.16.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.7...v1.16.8
[1.16.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.6...v1.16.7
[1.16.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.5...v1.16.6
[1.16.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.4...v1.16.5
[1.16.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.3...v1.16.4
[1.16.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.2...v1.16.3
[1.16.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.1...v1.16.2
[1.16.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.0...v1.16.1
[1.16.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.15.10...v1.16.0
[1.15.10]:
https://redirect.github.com/crate-ci/typos/compare/v1.15.9...v1.15.10
[1.15.9]:
https://redirect.github.com/crate-ci/typos/compare/v1.15.8...v1.15.9
[1.15.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.15.7...v1.15.8
[1.15.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.15.6...v1.15.7
[1.15.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.15.5...v1.15.6
[1.15.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.15.4...v1.15.5
[1.15.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.15.3...v1.15.4
[1.15.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.15.2...v1.15.3
[1.15.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.15.1...v1.15.2
[1.15.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.15.0...v1.15.1
[1.15.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.12...v1.15.0
[1.14.12]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.11...v1.14.12
[1.14.11]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.10...v1.14.11
[1.14.10]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.9...v1.14.10
[1.14.9]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.8...v1.14.9
[1.14.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.7...v1.14.8
[1.14.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.6...v1.14.7
[1.14.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.5...v1.14.6
[1.14.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.4...v1.14.5
[1.14.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.3...v1.14.4
[1.14.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.2...v1.14.3
[1.14.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.1...v1.14.2
[1.14.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.0...v1.14.1
[1.14.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.26...v1.14.0
[1.13.26]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.25...v1.13.26
[1.13.25]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.24...v1.13.25
[1.13.24]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.23...v1.13.24
[1.13.23]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.22...v1.13.23
[1.13.22]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.21...v1.13.22
[1.13.21]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.20...v1.13.21
[1.13.20]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.19...v1.13.20
[1.13.19]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.18...v1.13.19
[1.13.18]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.17...v1.13.18
[1.13.17]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.16...v1.13.17
[1.13.16]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.15...v1.13.16
[1.13.15]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.14...v1.13.15
[1.13.14]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.13...v1.13.14
[1.13.13]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.12...v1.13.13
[1.13.12]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.11...v1.13.12
[1.13.11]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.10...v1.13.11
[1.13.10]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.9...v1.13.10
[1.13.9]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.8...v1.13.9
[1.13.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.7...v1.13.8
[1.13.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.6...v1.13.7
[1.13.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.5...v1.13.6
[1.13.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.4...v1.13.5
[1.13.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.3...v1.13.4
[1.13.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.2...v1.13.3
[1.13.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.1...v1.13.2
[1.13.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.0...v1.13.1
[1.13.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.14...v1.13.0
[1.12.14]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.13...v1.12.14
[1.12.13]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.12...v1.12.13
[1.12.12]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.11...v1.12.12
[1.12.11]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.10...v1.12.11
[1.12.10]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.9...v1.12.10
[1.12.9]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.8...v1.12.9
[1.12.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.7...v1.12.8
[1.12.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.6...v1.12.7
[1.12.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.5...v1.12.6
[1.12.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.4...v1.12.5
[1.12.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.3...v1.12.4
[1.12.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.2...v1.12.3
[1.12.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.1...v1.12.2
[1.12.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.0...v1.12.1
[1.12.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.11.5...v1.12.0
[1.11.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.11.4...v1.11.5
[1.11.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.11.3...v1.11.4
[1.11.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.11.2...v1.11.3
[1.11.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.11.1...v1.11.2
[1.11.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.11.0...v1.11.1
[1.11.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.10.3...v1.11.0
[1.10.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.10.2...v1.10.3
[1.10.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.10.1...v1.10.2
[1.10.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.10.0...v1.10.1
[1.10.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.9.0...v1.10.0
[1.9.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.8.1...v1.9.0
[1.8.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.8.0...v1.8.1
[1.8.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.7.3...v1.8.0
[1.7.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.7.2...v1.7.3
[1.7.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.7.1...v1.7.2
[1.7.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.7.0...v1.7.1
[1.7.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.6.0...v1.7.0
[1.6.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.5.0...v1.6.0
[1.5.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.4.1...v1.5.0
[1.4.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.4.0...v1.4.1
[1.4.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.3.9...v1.4.0
[1.3.9]:
https://redirect.github.com/crate-ci/typos/compare/v1.3.8...v1.3.9
[1.3.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.3.7...v1.3.8
[1.3.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.3.6...v1.3.7
[1.3.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.3.5...v1.3.6
[1.3.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.3.4...v1.3.5
[1.3.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.3.3...v1.3.4
[1.3.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.3.2...v1.3.3
[1.3.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.3.1...v1.3.2
[1.3.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.3.0...v1.3.1
[1.3.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.2.1...v1.3.0
[1.2.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.2.0...v1.2.1
[1.2.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.1.9...v1.2.0
[1.1.9]:
https://redirect.github.com/crate-ci/typos/compare/v1.1.8...v1.1.9
[1.1.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.1.7...v1.1.8
[1.1.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.1.6...v1.1.7
[1.1.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.1.5...v1.1.6
[1.1.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.1.4...v1.1.5
[1.1.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.1.3...v1.1.4
[1.1.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.1.2...v1.1.3
[1.1.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.1.1...v1.1.2
[1.1.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.1.0...v1.1.1
[1.1.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.11...v1.1.0
[1.0.11]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.10...v1.0.11
[1.0.10]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.9...v1.0.10
[1.0.9]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.8...v1.0.9
[1.0.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.7...v1.0.8
[1.0.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.6...v1.0.7
[1.0.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.5...v1.0.6
[1.0.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.4...v1.0.5
[1.0.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.3...v1.0.4
[1.0.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.2...v1.0.3
[1.0.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.1...v1.0.2
[1.0.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.0...v1.0.1
[1.0.0]:
https://redirect.github.com/crate-ci/typos/compare/v0.4.0...v1.0.0
[0.4.0]:
https://redirect.github.com/crate-ci/typos/compare/v0.3.0...v0.4.0
[0.3.0]:
https://redirect.github.com/crate-ci/typos/compare/v0.2.0...v0.3.0
[0.2.0]:
https://redirect.github.com/crate-ci/typos/compare/v0.1.4...v0.2.0
###
[`v1.35.0`](https://redirect.github.com/crate-ci/typos/blob/HEAD/CHANGELOG.md#014---2019-11-03 )
[Compare
Source](https://redirect.github.com/crate-ci/typos/compare/v1.34.0...v1.35.0 )
##### Bug Fixes
- Ignore numbers as identifiers
([a00831c8](https://redirect.github.com/crate-ci/typos/commit/a00831c847b7efd81be520ea9b5d02f70555351f ))
- Improve the organization of --help
([a48a457c](https://redirect.github.com/crate-ci/typos/commit/a48a457cc3ca817850118e2a2fb8b20fecdd40b8 ))
##### Features
- Dump files, identifiers, and words
([ce365ae1](https://redirect.github.com/crate-ci/typos/commit/ce365ae12e12fddfb6fc42a7f1e5ea71834d6051 ),
closes
[#​41](https://redirect.github.com/crate-ci/typos/issues/41 ))
- Give control over allowed identifier characters for leading vs rest
([107308a6](https://redirect.github.com/crate-ci/typos/commit/107308a655a425eb593bf5e4928572c16e6a9bdd ))
##### Performance
- Use standard identifier rules to avoid doing umber checks
([107308a6](https://redirect.github.com/crate-ci/typos/commit/107308a655a425eb593bf5e4928572c16e6a9bdd ))
- Only do hex check if digits are in identifiers
([68cd36d0](https://redirect.github.com/crate-ci/typos/commit/68cd36d0de90226dbc9d31c2ce6d8bf6b69adb5c ))
<!-- next-url -->
[Unreleased]:
https://redirect.github.com/crate-ci/typos/compare/v1.35.0...HEAD
[1.35.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.34.0...v1.35.0
[1.34.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.33.1...v1.34.0
[1.33.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.33.0...v1.33.1
[1.33.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.32.0...v1.33.0
[1.32.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.31.2...v1.32.0
[1.31.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.31.1...v1.31.2
[1.31.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.31.0...v1.31.1
[1.31.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.30.3...v1.31.0
[1.30.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.30.2...v1.30.3
[1.30.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.30.1...v1.30.2
[1.30.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.30.0...v1.30.1
[1.30.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.29.10...v1.30.0
[1.29.10]:
https://redirect.github.com/crate-ci/typos/compare/v1.29.9...v1.29.10
[1.29.9]:
https://redirect.github.com/crate-ci/typos/compare/v1.29.8...v1.29.9
[1.29.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.29.7...v1.29.8
[1.29.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.29.6...v1.29.7
[1.29.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.29.5...v1.29.6
[1.29.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.29.4...v1.29.5
[1.29.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.29.3...v1.29.4
[1.29.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.29.2...v1.29.3
[1.29.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.29.1...v1.29.2
[1.29.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.29.0...v1.29.1
[1.29.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.28.4...v1.29.0
[1.28.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.28.3...v1.28.4
[1.28.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.28.2...v1.28.3
[1.28.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.28.1...v1.28.2
[1.28.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.28.0...v1.28.1
[1.28.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.27.3...v1.28.0
[1.27.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.27.2...v1.27.3
[1.27.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.27.1...v1.27.2
[1.27.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.27.0...v1.27.1
[1.27.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.26.8...v1.27.0
[1.26.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.26.7...v1.26.8
[1.26.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.26.6...v1.26.7
[1.26.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.26.5...v1.26.6
[1.26.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.26.4...v1.26.5
[1.26.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.26.3...v1.26.4
[1.26.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.26.2...v1.26.3
[1.26.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.26.1...v1.26.2
[1.26.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.26.0...v1.26.1
[1.26.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.25.0...v1.26.0
[1.25.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.24.6...v1.25.0
[1.24.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.24.5...v1.24.6
[1.24.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.24.4...v1.24.5
[1.24.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.24.3...v1.24.4
[1.24.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.24.2...v1.24.3
[1.24.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.24.1...v1.24.2
[1.24.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.24.0...v1.24.1
[1.24.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.23.7...v1.24.0
[1.23.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.23.6...v1.23.7
[1.23.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.23.5...v1.23.6
[1.23.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.23.4...v1.23.5
[1.23.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.23.3...v1.23.4
[1.23.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.23.2...v1.23.3
[1.23.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.23.1...v1.23.2
[1.23.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.23.0...v1.23.1
[1.23.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.22.9...v1.23.0
[1.22.9]:
https://redirect.github.com/crate-ci/typos/compare/v1.22.8...v1.22.9
[1.22.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.22.7...v1.22.8
[1.22.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.22.6...v1.22.7
[1.22.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.22.5...v1.22.6
[1.22.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.22.4...v1.22.5
[1.22.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.22.3...v1.22.4
[1.22.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.22.2...v1.22.3
[1.22.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.22.1...v1.22.2
[1.22.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.22.0...v1.22.1
[1.22.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.21.0...v1.22.0
[1.21.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.20.10...v1.21.0
[1.20.10]:
https://redirect.github.com/crate-ci/typos/compare/v1.20.9...v1.20.10
[1.20.9]:
https://redirect.github.com/crate-ci/typos/compare/v1.20.8...v1.20.9
[1.20.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.20.7...v1.20.8
[1.20.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.20.6...v1.20.7
[1.20.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.20.5...v1.20.6
[1.20.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.20.4...v1.20.5
[1.20.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.20.3...v1.20.4
[1.20.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.20.2...v1.20.3
[1.20.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.20.1...v1.20.2
[1.20.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.20.0...v1.20.1
[1.20.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.19.0...v1.20.0
[1.19.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.18.2...v1.19.0
[1.18.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.18.1...v1.18.2
[1.18.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.18.0...v1.18.1
[1.18.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.17.2...v1.18.0
[1.17.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.17.1...v1.17.2
[1.17.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.17.0...v1.17.1
[1.17.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.26...v1.17.0
[1.16.26]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.25...v1.16.26
[1.16.25]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.24...v1.16.25
[1.16.24]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.23...v1.16.24
[1.16.23]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.22...v1.16.23
[1.16.22]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.21...v1.16.22
[1.16.21]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.20...v1.16.21
[1.16.20]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.19...v1.16.20
[1.16.19]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.18...v1.16.19
[1.16.18]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.17...v1.16.18
[1.16.17]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.16...v1.16.17
[1.16.16]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.15...v1.16.16
[1.16.15]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.14...v1.16.15
[1.16.14]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.13...v1.16.14
[1.16.13]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.12...v1.16.13
[1.16.12]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.11...v1.16.12
[1.16.11]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.10...v1.16.11
[1.16.10]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.9...v1.16.10
[1.16.9]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.8...v1.16.9
[1.16.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.7...v1.16.8
[1.16.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.6...v1.16.7
[1.16.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.5...v1.16.6
[1.16.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.4...v1.16.5
[1.16.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.3...v1.16.4
[1.16.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.2...v1.16.3
[1.16.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.1...v1.16.2
[1.16.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.0...v1.16.1
[1.16.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.15.10...v1.16.0
[1.15.10]:
https://redirect.github.com/crate-ci/typos/compare/v1.15.9...v1.15.10
[1.15.9]:
https://redirect.github.com/crate-ci/typos/compare/v1.15.8...v1.15.9
[1.15.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.15.7...v1.15.8
[1.15.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.15.6...v1.15.7
[1.15.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.15.5...v1.15.6
[1.15.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.15.4...v1.15.5
[1.15.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.15.3...v1.15.4
[1.15.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.15.2...v1.15.3
[1.15.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.15.1...v1.15.2
[1.15.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.15.0...v1.15.1
[1.15.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.12...v1.15.0
[1.14.12]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.11...v1.14.12
[1.14.11]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.10...v1.14.11
[1.14.10]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.9...v1.14.10
[1.14.9]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.8...v1.14.9
[1.14.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.7...v1.14.8
[1.14.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.6...v1.14.7
[1.14.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.5...v1.14.6
[1.14.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.4...v1.14.5
[1.14.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.3...v1.14.4
[1.14.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.2...v1.14.3
[1.14.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.1...v1.14.2
[1.14.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.0...v1.14.1
[1.14.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.26...v1.14.0
[1.13.26]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.25...v1.13.26
[1.13.25]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.24...v1.13.25
[1.13.24]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.23...v1.13.24
[1.13.23]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.22...v1.13.23
[1.13.22]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.21...v1.13.22
[1.13.21]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.20...v1.13.21
[1.13.20]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.19...v1.13.20
[1.13.19]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.18...v1.13.19
[1.13.18]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.17...v1.13.18
[1.13.17]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.16...v1.13.17
[1.13.16]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.15...v1.13.16
[1.13.15]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.14...v1.13.15
[1.13.14]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.13...v1.13.14
[1.13.13]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.12...v1.13.13
[1.13.12]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.11...v1.13.12
[1.13.11]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.10...v1.13.11
[1.13.10]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.9...v1.13.10
[1.13.9]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.8...v1.13.9
[1.13.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.7...v1.13.8
[1.13.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.6...v1.13.7
[1.13.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.5...v1.13.6
[1.13.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.4...v1.13.5
[1.13.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.3...v1.13.4
[1.13.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.2...v1.13.3
[1.13.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.1...v1.13.2
[1.13.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.0...v1.13.1
[1.13.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.14...v1.13.0
[1.12.14]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.13...v1.12.14
[1.12.13]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.12...v1.12.13
[1.12.12]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.11...v1.12.12
[1.12.11]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.10...v1.12.11
[1.12.10]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.9...v1.12.10
[1.12.9]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.8...v1.12.9
[1.12.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.7...v1.12.8
[1.12.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.6...v1.12.7
[1.12.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.5...v1.12.6
[1.12.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.4...v1.12.5
[1.12.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.3...v1.12.4
[1.12.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.2...v1.12.3
[1.12.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.1...v1.12.2
[1.12.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.0...v1.12.1
[1.12.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.11.5...v1.12.0
[1.11.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.11.4...v1.11.5
[1.11.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.11.3...v1.11.4
[1.11.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.11.2...v1.11.3
[1.11.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.11.1...v1.11.2
[1.11.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.11.0...v1.11.1
[1.11.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.10.3...v1.11.0
[1.10.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.10.2...v1.10.3
[1.10.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.10.1...v1.10.2
[1.10.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.10.0...v1.10.1
[1.10.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.9.0...v1.10.0
[1.9.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.8.1...v1.9.0
[1.8.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.8.0...v1.8.1
[1.8.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.7.3...v1.8.0
[1.7.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.7.2...v1.7.3
[1.7.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.7.1...v1.7.2
[1.7.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.7.0...v1.7.1
[1.7.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.6.0...v1.7.0
[1.6.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.5.0...v1.6.0
[1.5.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.4.1...v1.5.0
[1.4.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.4.0...v1.4.1
[1.4.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.3.9...v1.4.0
[1.3.9]:
https://redirect.github.com/crate-ci/typos/compare/v1.3.8...v1.3.9
[1.3.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.3.7...v1.3.8
[1.3.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.3.6...v1.3.7
[1.3.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.3.5...v1.3.6
[1.3.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.3.4...v1.3.5
[1.3.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.3.3...v1.3.4
[1.3.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.3.2...v1.3.3
[1.3.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.3.1...v1.3.2
[1.3.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.3.0...v1.3.1
[1.3.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.2.1...v1.3.0
[1.2.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.2.0...v1.2.1
[1.2.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.1.9...v1.2.0
[1.1.9]:
https://redirect.github.com/crate-ci/typos/compare/v1.1.8...v1.1.9
[1.1.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.1.7...v1.1.8
[1.1.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.1.6...v1.1.7
[1.1.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.1.5...v1.1.6
[1.1.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.1.4...v1.1.5
[1.1.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.1.3...v1.1.4
[1.1.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.1.2...v1.1.3
[1.1.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.1.1...v1.1.2
[1.1.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.1.0...v1.1.1
[1.1.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.11...v1.1.0
[1.0.11]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.10...v1.0.11
[1.0.10]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.9...v1.0.10
[1.0.9]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.8...v1.0.9
[1.0.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.7...v1.0.8
[1.0.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.6...v1.0.7
[1.0.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.5...v1.0.6
[1.0.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.4...v1.0.5
[1.0.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.3...v1.0.4
[1.0.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.2...v1.0.3
[1.0.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.1...v1.0.2
[1.0.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.0...v1.0.1
[1.0.0]:
https://redirect.github.com/crate-ci/typos/compare/v0.4.0...v1.0.0
[0.4.0]:
https://redirect.github.com/crate-ci/typos/compare/v0.3.0...v0.4.0
[0.3.0]:
https://redirect.github.com/crate-ci/typos/compare/v0.2.0...v0.3.0
[0.2.0]:
https://redirect.github.com/crate-ci/typos/compare/v0.1.4...v0.2.0
</details>
---
### Configuration
📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).
🚦 **Automerge**: Enabled.
♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box
---
This PR was generated by [Mend Renovate](https://mend.io/renovate/ ).
View the [repository job
log](https://developer.mend.io/github/oxc-project/oxc ).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS41MS4xIiwidXBkYXRlZEluVmVyIjoiNDEuNTEuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Cameron Clark <cameron.clark@hey.com >
2025-08-04 18:55:04 +01:00
Dunqing
3cdac4ce74
fix(isolated-declarations): optional parameter property misses undefined type ( #12579 )
...
[TypeScript Playground](https://www.typescriptlang.org/play/?#code/KYDwDg9gTgLgBAYwDYEMDOa4AUoEsBuKMwAwhAHZoxQCuCM0A6rjABYDyYMuFKSWKKCgC2wYlEwBvAFABIMHkLFEFKrXrQAFHNlRgARxq49AEwBccNbnIBzADQ6IXHuT4B+C+RrCARsCgOsvI0Pki4CHBgIWEInNy8SB5wPhAQSMAo5IHyikTAkbnEcS7uFla22XooJhRIAJ5wVTXk9cUJSV6+-oEAlHCSAL7SA0A )
Input:
```ts
export class PrivateConstructorWithOptionalParameters {
private constructor(
required: string,
optional?: number,
public publicOptional?: boolean,
private privateOptional?: string,
readonly readonlyOptional?: number,
) {}
}
```
Output:
```ts
export declare class PrivateConstructorWithOptionalParameters {
publicOptional?: boolean | undefined;
private privateOptional?;
readonly readonlyOptional?: number | undefined;
private constructor();
}
```
optional parameter property should union the original type with `undefined`
2025-07-28 13:23:20 +00:00
Dunqing
4f9cb0b37b
fix(isolated-declarations): crash when transforming a class with a parameter property in a private constructor ( #12578 )
...
* close #12557
2025-07-28 13:23:20 +00:00
Dunqing
9a9d78d71a
fix(isolated-declarations): transformed parameter property has an incorrect type annotation ( #12450 )
...
* close #12361
Regressed by https://github.com/oxc-project/oxc/pull/12046
2025-07-23 13:43:52 +00:00
Dunqing
89da0272bc
fix(isolated-declarations): incorrect error when exported type is locally shadowed by an unexported variable ( #12466 )
...
* close #12465
`Variable`, `Function`, and `TSModuleDeclaration` can be shadowed by type declaration, so we should check if there is a value reference to decide whether it should be retained.
Others like `Enum` and `Class` don't allow redeclaration, so don't need to check.
2025-07-23 10:35:00 +00:00
Dunqing
42976a8ed4
fix(isolated-declarations): produce incorrect types when getter/setter with different types ( #12046 )
...
close : #12023
2025-07-03 06:41:28 +00:00
Dunqing
957a3d5d88
fix(isolated-declarations): missing parameter properties of constructor overload ( #11852 )
...
close : #11784
The parameter properties of the constructor overload should be retained anyway.
2025-06-23 04:32:33 +00:00
Dunqing
b8b3530cd1
fix(isolated-declarations): don't transform constructor params if they don’t have accessbility ( #11842 )
...
close : #11663
2025-06-22 10:59:31 +00:00
Boshen
25167f23ec
perf(parser): parse ts type signature without rewind ( #11443 )
...
part of #11334
2025-06-02 14:49:00 +00:00
Dunqing
03e8aa9d24
test(isolated-declarations): fix multiline comment mismatch in windows ( #11373 )
...
Fixes https://github.com/oxc-project/oxc/actions/runs/15327109307/job/43124348533
I don't know why it failed in Windows, I just follow the Boshen way to solve the problem.
2025-05-29 15:29:47 +00:00
magic-akari
daaa8f522e
fix(parser): correctly parse decorators of property declaration ( #11370 )
...
- Closes : #11367
---------
Co-authored-by: Dunqing <dengqing0821@gmail.com >
2025-05-29 23:12:54 +08:00
magic-akari
e93caa40de
fix(isolated-declarations): Omit empty variable declarations ( #11372 )
...
- Closes : #11371
2025-05-29 22:44:18 +08:00
magic-akari
3249ab641e
fix(isolated-declarations): correctly emit string property keys for non-identifiable name ( #11329 )
...
- Closes : #11318
- Closes: https://github.com/oxc-project/oxc/issues/11338
2025-05-28 10:46:34 +08:00
Dunqing
7126adb5e8
fix(isolated-declarations): type of class setter/getter cannot be inferred when the key is a global Symbol.xxx expression ( #11236 )
...
Similar to #11229 , using `PropertyKey` to store accessor annotation because `[Symbol.xxx]` is not a static name.
2025-05-23 11:51:29 +00:00
Dunqing
ac9638ec0f
fix(isolated-declarations): object property key was generated incorrectly ( #11231 )
...
Just for aligning with `TypeScript`, the object key should be converted to a static property key when possible
```ts
const ObjectKeys = {
a: 0,
["b"]: 1,
[`c`]: 2,
[3]: 3,
[-3]: 4,
[4n]: 5,
};
```
```ts
declare const ObjectKeys: {
a: number
b: number
c: number
3: number
[-3]: number
};
```
`BigInt` is invalid as a property key in TypeScript, so `4n` doesn't emit.
2025-05-23 11:51:28 +00:00
Dunqing
123e63c731
feat(isolated-declarations): report an error for object methods whose return type cannot be inferred ( #11230 )
...
The same as `class`, if the method's return type cannot be inferred, it should report an error.
```ts
const A = {
method() {
//^^^^^^^ Method must have an explicit return type annotation with --isolatedDeclarations.
}
}
```
2025-05-23 11:51:28 +00:00
Dunqing
9ec85003bc
fix(isolated-declarations): incorrect type of object property accessor ( #11229 )
...
close : #11186
2025-05-23 11:51:28 +00:00