Skip to content
Open
Show file tree
Hide file tree
Changes from 173 commits
Commits
Show all changes
534 commits
Select commit Hold shift + click to select a range
1ff7790
Reword 15 comments
Jarred-Sumner Oct 23, 2026
10d8e87
`bun check`: a comparison that only succeeds where an error is report…
Jarred-Sumner Oct 23, 2026
daa7da7
`bun check`: the pass that reports a call's error continues with the …
Jarred-Sumner Oct 23, 2026
570acaa
`bun lint`: with an oxlint config, a plugin's rule gets the flags of …
Jarred-Sumner Oct 23, 2026
6094e57
`bun lint`: an `.oxlintrc.json` may turn on a plugin's rule without o…
Jarred-Sumner Oct 23, 2026
2a0a101
`bun lint`: with an oxlint config, the text of a plugin's fix need no…
Jarred-Sumner Oct 23, 2026
33cb964
`bun check`: the pass that reports a call's error continues with the …
Jarred-Sumner Oct 23, 2026
17c2735
`bun check`: a value that another file's declaration of a namespace e…
Jarred-Sumner Oct 23, 2026
7d6f96e
`bun check`: TS2744 for a later type parameter that's the check type …
Jarred-Sumner Oct 23, 2026
8d52478
`bun check`: a binding element with a default has type `any`, not the…
Jarred-Sumner Oct 23, 2026
6034205
`bun check`: every check sees that another file's export of a namespa…
Jarred-Sumner Oct 23, 2026
4a3e921
`bun check`: a type literal nested in one in the type arguments of an…
Jarred-Sumner Oct 24, 2026
07b64d9
Merge remote-tracking branch 'origin/main' into claude/lint-check-perf
Jarred-Sumner Oct 24, 2026
03e7f9c
`bun fmt`: the function type of a Flow indexer keeps its parentheses …
Jarred-Sumner Oct 24, 2026
afcc78a
`bun fmt`: a spread in a Flow object type can be a union that starts …
Jarred-Sumner Oct 24, 2026
8c54495
`bun fmt`: a line of `:` or `|` in Markdown stays below a line that's…
Jarred-Sumner Oct 24, 2026
8f56c81
`bun fmt`: with an oxfmt config, `?` or `!` after a property name in …
Jarred-Sumner Oct 24, 2026
956091f
`bun fmt`: with an oxfmt config, a type cast comment behind a unary o…
Jarred-Sumner Oct 24, 2026
d5e58b3
`bun fmt`: prettier-plugin-ember-template-tag only adds `.gjs` and `.…
Jarred-Sumner Oct 24, 2026
a0e2f79
test: the renegotiating wss:// origin sends its message before its re…
Jarred-Sumner Oct 24, 2026
b79eb44
`bun check`: the binder decides whether a function is context sensitive
Jarred-Sumner Oct 24, 2026
338e5bb
`bun fmt`: the config of Tailwind CSS 3 is loaded with Tailwind's own…
Jarred-Sumner Oct 24, 2026
ca4940c
`bun fmt`: with an oxfmt config, `f(<A>{}, <B>{ b })` hugs its last a…
Jarred-Sumner Oct 24, 2026
c68a57e
`bun fmt`: six more Prettier plugins that only add a language
Jarred-Sumner Oct 24, 2026
60d61b4
Merge remote-tracking branch 'origin/main' into claude/lint-check-perf
Jarred-Sumner Oct 24, 2026
640c7ef
`bun fmt`: markup can start a line behind the `[ ]` of a Markdown task
Jarred-Sumner Oct 24, 2026
b7c9657
Merge branch 'main' into claude/lint-check-perf
alii Oct 24, 2026
791b080
`bun check`: less work for `a.b`, `this`, and a function passed as an…
Jarred-Sumner Oct 24, 2026
1409b10
Merge remote-tracking branch 'origin/main' into claude/lint-check-perf
Jarred-Sumner Oct 24, 2026
dcee88d
`bun check`: less work before and after each expression
Jarred-Sumner Oct 24, 2026
109852a
Revert "`bun check`: less work before and after each expression"
Jarred-Sumner Oct 24, 2026
ae15f9d
`bun check`: a shorter path from `checkExpression` to the expression'…
Jarred-Sumner Oct 24, 2026
f963d4c
`bun check`: the work that leads to an instantiation limit is done on…
Jarred-Sumner Oct 24, 2026
7dbbc3d
`bun check`: read the class counter in place in `recheck_in_flow_loop`
Jarred-Sumner Oct 24, 2026
e577990
`bun check`: no recursion along a chain of logical operators in `isCo…
Jarred-Sumner Oct 24, 2026
db5730e
Revert "`bun check`: the work that leads to an instantiation limit is…
Jarred-Sumner Oct 24, 2026
cb614e2
`bun check`: the work that leads to a depth or size limit is done onc…
Jarred-Sumner Oct 24, 2026
cd44469
`bun check`: mark the rare arms of hot functions with `cold_path()`
Jarred-Sumner Oct 24, 2026
2f5a072
`bun check`: what's in the type arguments of an import type is resolv…
Jarred-Sumner Oct 24, 2026
e2ed95b
`bun check`: a `finally` block after a call that never returns is wal…
Jarred-Sumner Oct 24, 2026
aa27de8
`bun check`: a pattern finds a `private` or `protected` property in t…
Jarred-Sumner Oct 24, 2026
b92bf8a
`bun check`: what an argument's own check reports while a loop is ana…
Jarred-Sumner Oct 24, 2026
f68dd77
`bun lint`: the library files of an installed TypeScript older than 7…
Jarred-Sumner Oct 24, 2026
f88314b
`bun check`: revert "the work that leads to a depth or size limit is …
Jarred-Sumner Oct 24, 2026
293bb33
`bun check`: the type that's inferred for `keyof X` is `{ ...; }` onc…
Jarred-Sumner Oct 24, 2026
d3ea7c0
`bun check`: a pattern finds a `private` or `protected` property in t…
Jarred-Sumner Oct 24, 2026
d6c3224
`bun check`: the errors of a candidate are collected in a separate list
Jarred-Sumner Oct 24, 2026
3afa224
`bun fmt`: in Markdown, a line of bars or colons stays below a delimi…
Jarred-Sumner Oct 24, 2026
3c9dbc5
`bun check`: an antecedent is added to a label without a search throu…
Jarred-Sumner Oct 24, 2026
1d385b6
`bun check`: whether an expression is context sensitive is computed o…
Jarred-Sumner Oct 24, 2026
1a247af
`bun check`: deeply nested literals in an argument are no longer cubic
Jarred-Sumner Oct 24, 2026
49c0538
`bun check`: a variable that's only written in an evaluated expressio…
Jarred-Sumner Oct 24, 2026
c39ca3f
`bun check`: an unused function with `@overload` tags is reported onc…
Jarred-Sumner Oct 24, 2026
5cb942d
`bun check`: the name after `@see` is parsed
Jarred-Sumner Oct 24, 2026
a75aa47
`bun check`: a method that several members of an intersection declare…
Jarred-Sumner Oct 24, 2026
4e2c234
`bun check`: TS2339 names the type that `this` has during inference, …
Jarred-Sumner Oct 24, 2026
55e7081
`bun check`: a long chain of logical operators is checked in a time t…
Jarred-Sumner Oct 25, 2026
a970ee9
`bun check`: the test with 60,000 nested `yield` only binds the file
Jarred-Sumner Oct 25, 2026
ce2f995
`bun check`: the arguments of a call that fails while a loop is analy…
Jarred-Sumner Oct 25, 2026
337c940
`bun check`: what follows from a failed comparison isn't published be…
Jarred-Sumner Oct 25, 2026
a8b3605
`bun check`: the function around a node is found without a walk over …
Jarred-Sumner Oct 25, 2026
6e844d1
`bun lint`: with an `.eslintrc`, the rules are those of the installed…
Jarred-Sumner Oct 25, 2026
d9ffb9a
`bun fmt`, `bun lint`: `a ** b as T ** c` is only a syntax error for …
Jarred-Sumner Oct 25, 2026
29e20e4
`bun fmt`: no panic on a Flow function type with an unnamed parameter…
Jarred-Sumner Oct 25, 2026
432a6ef
`bun check`: tests for what follows from a failed comparison that isn…
Jarred-Sumner Oct 25, 2026
17638b4
`bun lint`: with an `.eslintrc` and ESLint 9, `eslint:recommended`, t…
Jarred-Sumner Oct 25, 2026
8163948
`bun lint`: `a ** b as T ** c` is linted with types too
Jarred-Sumner Oct 25, 2026
0c824db
`bun lint`: revert "`a ** b as T ** c` is linted with types too"
Jarred-Sumner Oct 25, 2026
dd684d2
`bun lint`: the generator of ESLint 8's and 9's tables refuses a mess…
Jarred-Sumner Oct 25, 2026
7ea5291
`bun lint`: `a ** b as T ** c` is linted with types too
Jarred-Sumner Oct 25, 2026
5450336
`bun lint`: a JavaScript rule that reads what isn't known from a type…
Jarred-Sumner Oct 25, 2026
db0e8f2
[autofix.ci] apply automated fixes
autofix-ci[bot] Oct 25, 2026
76882b3
`bun check`: finding a long list of statements reachable is no longer…
Jarred-Sumner Oct 25, 2026
c3d0a10
[autofix.ci] apply automated fixes
autofix-ci[bot] Oct 25, 2026
4e537c4
`bun lint`: the JavaScript rules that read what isn't known from a ty…
Jarred-Sumner Oct 25, 2026
f2b8dee
`bun check`: a nested use of an inference context during the intra-ex…
Jarred-Sumner Oct 25, 2026
87ee482
`bun check`: a long chain of logical OR or `??` in the condition of a…
Jarred-Sumner Oct 25, 2026
a1d6e9f
`bun check`: a comparison that ran into a circular return type is sto…
Jarred-Sumner Oct 25, 2026
d616346
`bun check`: revert "a comparison that ran into a circular return typ…
Jarred-Sumner Oct 25, 2026
affb69d
`bun check`: a task that ignores what a later file's task stored unde…
Jarred-Sumner Oct 25, 2026
0222aa6
`bun check`: a comparison that ran into a circular return type is sto…
Jarred-Sumner Oct 25, 2026
a7bcd55
`bun check`: an untyped array filled with object literals is no longe…
Jarred-Sumner Oct 25, 2026
222485d
`bun check`: the expression that a function with a circular return ty…
Jarred-Sumner Oct 25, 2026
a1f085a
`bun check`: references in a long list of assignments or calls no lon…
Jarred-Sumner Oct 25, 2026
e4405d0
Merge branch 'main' into claude/lint-check-perf
Jarred-Sumner Oct 25, 2026
fff97a5
`bun check`: a parenthesized expression returned by a function with a…
Jarred-Sumner Oct 25, 2026
5ce9919
`bun check`: a comparison that inferred the return type of a contextu…
Jarred-Sumner Oct 25, 2026
dd2bcdf
`bun check`: revert "a comparison that inferred the return type of a …
Jarred-Sumner Oct 25, 2026
f106f95
`bun check`: how new a type on the comparison stacks is follows from …
Jarred-Sumner Oct 25, 2026
01db514
`bun check`: revert "how new a type on the comparison stacks is follo…
Jarred-Sumner Oct 25, 2026
2a5c50a
`bun check`: the out-of-line functions of a table keyed by node are c…
Jarred-Sumner Oct 25, 2026
8694cbc
`bun check`: a comparison that inferred a type from the body of a con…
Jarred-Sumner Oct 25, 2026
e233f0a
`bun lint`: the walk over a Markdown document is compiled once, not o…
Jarred-Sumner Oct 25, 2026
d635691
`bun check`: `check_provided_then` is compiled once, not once per caller
Jarred-Sumner Oct 25, 2026
9cfdd8f
`bun check`: a circular return type of an instantiated signature isn'…
Jarred-Sumner Oct 25, 2026
0a8cc39
`bun check`: five generic functions keep only what depends on their c…
Jarred-Sumner Oct 25, 2026
4855858
`bun check`: a property with the error type is printed by checking it…
Jarred-Sumner Oct 25, 2026
397570b
`bun fmt`: what prints a node is no longer compiled a second time for…
Jarred-Sumner Oct 25, 2026
1d929d6
`bun check`: a getter of an object literal keeps the type that a visi…
Jarred-Sumner Oct 25, 2026
3e4b4db
`bun fmt`: what `in_scope` does before and after its callback isn't g…
Jarred-Sumner Oct 25, 2026
26ecf56
`bun check`: a property whose initializer is a failed call is still p…
Jarred-Sumner Oct 25, 2026
15a9902
`bun check`: the errors of a getter's returned expression that is che…
Jarred-Sumner Oct 25, 2026
6830e84
`bun check`: a property whose initializer has a failed call anywhere …
Jarred-Sumner Oct 25, 2026
c495c7c
`bun check`: looking for a call in an initializer doesn't recurse
Jarred-Sumner Oct 25, 2026
0989dd0
[autofix.ci] apply automated fixes
autofix-ci[bot] Oct 25, 2026
fa4693f
`bun check`: the second check of an expression doesn't check the oper…
Jarred-Sumner Oct 25, 2026
6b0931b
`bun check`: a value assigned in a loop is checked again after a walk…
Jarred-Sumner Oct 25, 2026
74deeda
`bun check`: a variable keeps the type that a resolution inside its f…
Jarred-Sumner Oct 25, 2026
2e81d30
`bun check`: a reference to a constant doesn't check its initializer …
Jarred-Sumner Oct 25, 2026
5bee168
`bun check`: how new a type on the comparison stacks is follows from …
Jarred-Sumner Oct 25, 2026
6787d64
`bun check`: `Mentioned` has no flag beside `seen`
Jarred-Sumner Oct 25, 2026
18a4a78
`bun check`: the target of a compound assignment is checked again aft…
Jarred-Sumner Oct 25, 2026
64202de
`bun check`: what was resolved on the way to a type that a resolution…
Jarred-Sumner Oct 25, 2026
2874d41
`bun check`: the body of an arrow function is checked again after a w…
Jarred-Sumner Oct 25, 2026
0fba1d1
`bun check`: with `declaration`, an error that's deferred to the end …
Jarred-Sumner Oct 25, 2026
18c8a5c
`bun check`: an object literal is checked again after a walk in a mem…
Jarred-Sumner Oct 25, 2026
d6d54b4
`bun check`: what a task ignores in a file with errors is part of its…
Jarred-Sumner Oct 25, 2026
d0b5f04
`bun check`: a call that no candidate accepts doesn't take the return…
Jarred-Sumner Oct 25, 2026
f407b1c
`bun check`: what `resolve_return_type` does before and after its cal…
Jarred-Sumner Oct 25, 2026
77fea41
`bun check`: the mark of a call that no candidate accepts ends with t…
Jarred-Sumner Oct 25, 2026
734157d
`bun check`: the circular return type of a call that no candidate acc…
Jarred-Sumner Oct 25, 2026
d4d08b5
`bun check`: a parenthesized returned expression and the operand of `…
Jarred-Sumner Oct 25, 2026
f8aa2a9
`bun check`: a comparison that's only checked for its type reports no…
Jarred-Sumner Oct 25, 2026
30487ff
`bun check`: a type node in an expression is always checked where the…
Jarred-Sumner Oct 25, 2026
9941804
`bun check`: what follows from a walk in another task's file that end…
Jarred-Sumner Oct 25, 2026
25597d7
`bun check`: an assignment and a condition are always checked where t…
Jarred-Sumner Oct 25, 2026
a599e8c
`bun check`: `getTypeOfExpression` finds its earlier result while a r…
Jarred-Sumner Oct 25, 2026
5e8549e
`bun check`: an error that is deferred while the deferred messages of…
Jarred-Sumner Oct 25, 2026
883481b
`bun check`: the signature of a call that fails replaces the one that…
Jarred-Sumner Oct 25, 2026
a341ccf
`bun check`: the signature that an error message prints can close a c…
Jarred-Sumner Oct 25, 2026
948fb4e
`bun check`: revert "what follows from a walk in another task's file …
Jarred-Sumner Oct 25, 2026
e13e6f3
`bun check`: only a call's own arguments keep the contextual check of…
Jarred-Sumner Oct 25, 2026
ad8dd9c
`bun check`: one `flowTypeCache` for each resolution in progress, als…
Jarred-Sumner Oct 25, 2026
5827f79
`bun check`: the errors of both checks of a parenthesized returned ex…
Jarred-Sumner Oct 25, 2026
7c17236
`bun check`: the second check of a parenthesized returned expression …
Jarred-Sumner Oct 25, 2026
68321cf
`bun check`: every function that a call's own resolution checks keeps…
Jarred-Sumner Oct 25, 2026
999b63a
`bun check`: `getTypeOfExpression` keeps its results for good outside…
Jarred-Sumner Oct 25, 2026
5a19588
`bun check`: what was reported on the way to a type that a resolution…
Jarred-Sumner Oct 25, 2026
4717839
`bun check`: what the resolution of an assertion call reports while a…
Jarred-Sumner Oct 25, 2026
95cd798
`bun check`: a type found in the `flowTypeCache` of a resolution tain…
Jarred-Sumner Oct 25, 2026
afe5a71
`bun check`: a file's own task makes the walks that ended with an inc…
Jarred-Sumner Oct 25, 2026
805acd9
`bun check`: a resolution of a call that tsc doesn't make assigns not…
Jarred-Sumner Oct 25, 2026
8c3a675
`bun check`: revert "how new a type on the comparison stacks is follo…
Jarred-Sumner Oct 25, 2026
09dea18
`bun check`: on one thread a file's check finds the loops that the ch…
Jarred-Sumner Oct 25, 2026
89155bc
`bun check`: the error of a call that's first resolved two messages d…
Jarred-Sumner Oct 25, 2026
6f6fef5
`bun check`: `getTypeOfExpression` keeps for good only what follows f…
Jarred-Sumner Oct 25, 2026
a80de2b
`bun check`: revert "a resolution of a call that tsc doesn't make ass…
Jarred-Sumner Oct 25, 2026
c7929eb
`bun check`: a file's own task analyzes its loops itself, whichever f…
Jarred-Sumner Oct 25, 2026
9d47acf
`bun check`: the initializer of a circular variable keeps the type an…
Jarred-Sumner Oct 25, 2026
86a363b
`bun check`: a call doesn't check the default of a parameter that get…
Jarred-Sumner Oct 25, 2026
1a1e582
`bun check`: revert "the initializer of a circular variable keeps the…
Jarred-Sumner Oct 25, 2026
825a876
`bun check`: revert "a file's own task analyzes its loops itself" and…
Jarred-Sumner Oct 25, 2026
4566c33
`bun check`: a circular resolution of a variable returns `any`, and a…
Jarred-Sumner Oct 25, 2026
0d0eebf
`bun check`: with declaration files, a missing property that an earli…
Jarred-Sumner Oct 25, 2026
06a15f7
`bun check`: nothing is kept from a request for a parameter's type th…
Jarred-Sumner Oct 25, 2026
c7ee670
`bun check`: a missing property that the check of an earlier file has…
Jarred-Sumner Oct 25, 2026
fac6b9a
`bun check`: the contextual check of a callback that a resolution ins…
Jarred-Sumner Oct 25, 2026
3f6abde
`bun check`: a member of an object literal keeps the type of the chec…
Jarred-Sumner Oct 25, 2026
5e4ffbb
`bun check`: an expression is checked again inside its own check if t…
Jarred-Sumner Oct 25, 2026
9977b51
`bun check`: a call still checks the default of a parameter that's a …
Jarred-Sumner Oct 25, 2026
ddf0a9d
`bun check`: printing a declaration doesn't check the default of a bi…
Jarred-Sumner Oct 25, 2026
09c6d87
`bun check`: an argument is checked again with the type that a resolu…
Jarred-Sumner Oct 25, 2026
d7b02d1
`bun check`: inside a signature with parameters, a function in a vari…
Jarred-Sumner Oct 25, 2026
ed07b42
`bun check`: the callee that gave an initializer its quick type is ch…
Jarred-Sumner Oct 25, 2026
2d9c2ec
`bun check`: only an expression is checked again inside its own check…
Jarred-Sumner Oct 25, 2026
1760e11
`bun check`: a getter of an object literal keeps the type of a visit …
Jarred-Sumner Oct 25, 2026
10f1a4b
`bun check`: revert "a call still checks the default of a parameter t…
Jarred-Sumner Oct 25, 2026
bd20f86
`bun check`: a cycle that ends at a type guard being inferred is ente…
Jarred-Sumner Oct 25, 2026
d61ce48
`bun check`: remove the test of the reverted rule for a parameter tha…
Jarred-Sumner Oct 25, 2026
668bf86
`bun check`: a type or return type computed inside its own first reso…
Jarred-Sumner Oct 25, 2026
6cf112d
`bun check`: a returned expression that's kept in a cycle doesn't rep…
Jarred-Sumner Oct 25, 2026
29b39cf
`bun check`: a call asks for the type of an annotated parameter when …
Jarred-Sumner Oct 25, 2026
49424c2
`bun check`: a failed call replaces the signature that a resolution i…
Jarred-Sumner Oct 25, 2026
00d91ca
`bun check`: the next pass of a call asks again for a getter that was…
Jarred-Sumner Oct 25, 2026
15287af
`bun check`: a parameter property is resolved apart from its paramete…
Jarred-Sumner Oct 25, 2026
fe34013
`bun check`: the first resolution of a variable finds the type that i…
Jarred-Sumner Oct 25, 2026
b32fb34
`bun check`: a parameter property that's asked for twice is circular …
Jarred-Sumner Oct 25, 2026
f2cd353
`bun check`: only an argument is checked again after a request for a …
Jarred-Sumner Oct 25, 2026
870a633
`bun check`: the call in an initializer keeps the signature it got in…
Jarred-Sumner Oct 25, 2026
e51eb79
`bun check`: a member of an object literal keeps the error type of a …
Jarred-Sumner Oct 25, 2026
e7c9a22
`bun check`: a call that fails after a resolution inside it succeeded…
Jarred-Sumner Oct 25, 2026
a609cb9
`bun check`: an initializer's check inside the cycle is only remember…
Jarred-Sumner Oct 25, 2026
2483b57
`bun check`: an expression is checked again inside its own check wher…
Jarred-Sumner Oct 25, 2026
1a26247
`bun check`: inference between two signatures asks for the types of t…
Jarred-Sumner Oct 25, 2026
72adeed
`bun check`: revert "an expression is checked again inside its own ch…
Jarred-Sumner Oct 25, 2026
99ea1d9
`bun check`: the call in an initializer keeps the errors of the signa…
Jarred-Sumner Oct 25, 2026
91c1270
`bun check`: a ring that's silent from a resolution in progress is en…
Jarred-Sumner Oct 25, 2026
ff1dca7
`bun check`: an expression or a type node is evaluated again inside i…
Jarred-Sumner Oct 25, 2026
f1a65cf
`bun check`: a call that fails inside a cycle keeps its errors only i…
Jarred-Sumner Oct 25, 2026
13c14ed
`bun check`: a ring that's silent where a resolution begins again abo…
Jarred-Sumner Oct 25, 2026
b3b2ce2
`bun check`: a return type that the check of an initializer asked for…
Jarred-Sumner Oct 25, 2026
9cd7fe5
`bun check`: the declaration of a parameter property has the type of …
Jarred-Sumner Oct 25, 2026
afeafb3
`bun check`: two new tests expect what tsc 7.1 prints with one checker
Jarred-Sumner Oct 25, 2026
ba5a6ec
`bun check`: nothing is evaluated again inside its own evaluation on …
Jarred-Sumner Oct 25, 2026
a60c52d
Merge branch 'main' into claude/lint-check-perf
Jarred-Sumner Oct 26, 2026
5c6bb22
Merge branch 'main' into claude/lint-check-perf
Jarred-Sumner Oct 27, 2026
60ad0ee
Merge branch 'main' into claude/lint-check-perf
Jarred-Sumner Oct 28, 2026
2ece049
Merge remote-tracking branch 'origin/main' into claude/lint-check-perf
Jarred-Sumner Oct 28, 2026
ea8df9a
`bun check`, `bun lint`: two tests follow the merge of main
Jarred-Sumner Oct 28, 2026
774660e
`bun check`: give a test's namespace node its `attributes`
Jarred-Sumner Oct 28, 2026
a178f08
`bun check`: a deep stack of queries is no longer searched from end t…
Jarred-Sumner Oct 28, 2026
6186b8a
`--aot`: `import source x from ".."` is an error, as in `bun run`
Jarred-Sumner Oct 28, 2026
d8898ef
`--aot`: four tests follow TypeScript 7.1
Jarred-Sumner Oct 28, 2026
d80df18
`bun check`: `recheck_in_flow_loop` asks for the position only
Jarred-Sumner Oct 28, 2026
8696bdb
test: js-plugins.test.ts is two files
Jarred-Sumner Oct 28, 2026
05389b2
[autofix.ci] apply automated fixes
autofix-ci[bot] Oct 28, 2026
9eb48ba
`--aot`: a type or a private member used only in removed code is used
Jarred-Sumner Oct 28, 2026
7c14b40
`--aot`: five more programs and two generators follow TypeScript 7.1
Jarred-Sumner Oct 28, 2026
67ce69e
`--aot`: a private member destructured from `this` in removed code is…
Jarred-Sumner Oct 28, 2026
58ad4c9
`--aot`: the resolver of run-time imports gets normalized lookups back
Jarred-Sumner Oct 28, 2026
27871ae
`--aot`: `#x in o` in removed code uses `#x`
Jarred-Sumner Oct 28, 2026
dd63048
Run CI again
Jarred-Sumner Oct 28, 2026
7d259f5
`bun check`: grouping a file's expressions by kind reads each tag once
Jarred-Sumner Oct 28, 2026
c37ed75
test: Miri skips a test of 380,000 edit distances
Jarred-Sumner Oct 28, 2026
a47293e
`--dts`: `--runExternalCode` counts, and a content mapper's file gets…
Jarred-Sumner Oct 28, 2026
43afe73
`--dts`: the last dot of a name is found with `strings::last_index_of…
Jarred-Sumner Oct 28, 2026
1c87a20
`--dts`: the checker names each declaration file
Jarred-Sumner Oct 28, 2026
b6a0ded
`--dts`: a type imported from a content mapper's file is in the typed…
Jarred-Sumner Oct 28, 2026
854ec2e
[autofix.ci] apply automated fixes
autofix-ci[bot] Oct 28, 2026
f2ddce9
Merge branch 'main' into claude/lint-check-perf
Jarred-Sumner Oct 29, 2026
6e89ce2
`--aot`: two JSX programs follow TypeScript 7.1
Jarred-Sumner Oct 29, 2026
fb674be
`--aot`: four tests of the front end follow TypeScript 7.1
Jarred-Sumner Oct 29, 2026
05862ed
`--aot`: two tests of the front end have their check lines back
Jarred-Sumner Oct 29, 2026
86e37c3
`--aot`: the fuzzer finds TypeScript's tests in the bundle of 7.1
Jarred-Sumner Oct 29, 2026
5e55fe2
Merge branch 'main' into claude/lint-check-perf
Jarred-Sumner Oct 29, 2026
f6ce23b
Merge branch 'main' into claude/lint-check-perf
Jarred-Sumner Oct 31, 2026
77bf02d
Merge branch 'main' into claude/lint-check-perf
Jarred-Sumner Oct 31, 2026
f684ba4
Merge branch 'main' into claude/lint-check-perf
Jarred-Sumner Oct 31, 2026
f1c9191
bun check: the frame that tests build has every field
Jarred-Sumner Oct 31, 2026
dcb14a1
bun check: a const type parameter below object literals infers a read…
Jarred-Sumner Oct 31, 2026
5ae2a4e
test: --aot removes 80% of what the type checker uses
Jarred-Sumner Oct 31, 2026
3f0b95a
Merge branch 'main' into claude/lint-check-perf
Jarred-Sumner Nov 1, 2026
02f2d18
bun check: what follows a comparison that only succeeds where an erro…
Jarred-Sumner Nov 6, 2026
6109d79
bun check: remove message 100000
Jarred-Sumner Nov 6, 2026
b5b85b1
Merge branch 'main' into claude/lint-check-perf
Jarred-Sumner Nov 6, 2026
1d7c522
Merge branch 'main' into claude/lint-check-perf
Jarred-Sumner Nov 7, 2026
9866bb9
bun check: a private or protected setter counts in a union with a mem…
Jarred-Sumner Nov 7, 2026
d223c9d
bun build --compile: a private member read by an assignment pattern i…
Jarred-Sumner Nov 7, 2026
a5ccfcb
test: three expectations follow TypeScript 7.1
Jarred-Sumner Nov 7, 2026
2f62c54
test: the cast in angle brackets is in a .ts file
Jarred-Sumner Nov 7, 2026
70b5c5a
Merge branch 'main' into claude/lint-check-perf
Jarred-Sumner Nov 10, 2026
5a1cd8c
bun check: the test of OrderedSet asks with index_of
Jarred-Sumner Nov 10, 2026
9abcb80
test: two tests of the walk wait for the front end under TypeScript 7.1
Jarred-Sumner Nov 10, 2026
32f263b
bun check: two base types at each level of a hierarchy no longer doub…
Jarred-Sumner Nov 10, 2026
3fea743
bun check: a named file sees the globals of a script that only mentio…
Jarred-Sumner Nov 10, 2026
c839ff4
Merge branch 'main' into claude/lint-check-perf
Jarred-Sumner Nov 10, 2026
f70e0ba
bun check: an import on demand at the start of a line does not make a…
Jarred-Sumner Nov 10, 2026
05da5e3
bun check: a compiled executable no longer keeps the code that talks …
Jarred-Sumner Nov 10, 2026
4f102fb
test: most of Check is removed again, by the same measure as the othe…
Jarred-Sumner Nov 10, 2026
a959f4e
Merge branch 'main' into claude/lint-check-perf
Jarred-Sumner Nov 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions completions/bun.bash
Original file line number Diff line number Diff line change
Expand Up @@ -201,10 +201,10 @@ _bun_completions() {
COMPREPLY=( $(compgen -W "--bun --package --no-install --cwd --env-file --minimum-release-age --trust --verbose --silent --help -p -h" -- "${cur_word}") );
return;;
check)
COMPREPLY=( $(compgen -f -W "--project --pretty --build --no-pretty --all --threads --timing --cwd --no-script --help -p -b -h" -- "${cur_word}") );
COMPREPLY=( $(compgen -f -W "--project --pretty --build --no-pretty --all --threads --timing --cwd --no-script --runExternalCode --help -p -b -h" -- "${cur_word}") );
return;;
lint)
COMPREPLY=( $(compgen -f -W "--config --no-config-lookup --rule --rules --explain --init --global --no-inline-config --report-unused-disable-directives --print-config --doctor --allow-unsupported --staged --changed --ignore-pattern --ignore-path --no-ignore --ext --stdin --stdin-filename --list-files --no-error-on-unmatched-pattern --cwd --format --all --output-file --quiet --max-warnings --color --no-color --timing --fix --fix-dry-run --fix-type --fix-suggestions --fix-dangerously --type-aware --no-type-aware --tsconfig --type-check --infer-globals --no-infer-globals --threads --no-script --version --help --help-all --flavor --project --parser-options --parser --plugin --native-plugin-rules --no-native-plugin-rules --report-unused-disable-directives-severity --report-unused-inline-configs --no-warn-ignored --suppress-all --suppress-rule --suppressions-location --prune-suppressions --pass-on-unpruned-suppressions --pass-on-no-patterns --exit-on-fatal-error --concurrency --env-info --no-eslintrc --env --rulesdir --resolve-plugins-relative-to --allow --warn --deny --deny-warnings --silent --disable-nested-config --import-plugin --react-plugin --jsdoc-plugin --jest-plugin --vitest-plugin --jsx-a11y-plugin --nextjs-plugin --react-perf-plugin --promise-plugin --node-plugin --vue-plugin --disable-unicorn-plugin --disable-oxc-plugin --disable-typescript-plugin -c -f -o -v -h -p -A -W -D" -- "${cur_word}") );
COMPREPLY=( $(compgen -f -W "--config --no-config-lookup --rule --rules --explain --init --global --no-inline-config --report-unused-disable-directives --print-config --doctor --allow-unsupported --staged --changed --ignore-pattern --ignore-path --no-ignore --ext --stdin --stdin-filename --list-files --no-error-on-unmatched-pattern --cwd --format --all --output-file --quiet --verbose --max-warnings --color --no-color --timing --fix --fix-dry-run --fix-type --fix-suggestions --fix-dangerously --type-aware --no-type-aware --tsconfig --type-check --infer-globals --no-infer-globals --threads --no-script --version --help --help-all --flavor --project --parser-options --parser --plugin --native-plugin-rules --no-native-plugin-rules --report-unused-disable-directives-severity --report-unused-inline-configs --no-warn-ignored --suppress-all --suppress-rule --suppressions-location --prune-suppressions --pass-on-unpruned-suppressions --pass-on-no-patterns --exit-on-fatal-error --concurrency --env-info --no-eslintrc --env --rulesdir --resolve-plugins-relative-to --allow --warn --deny --deny-warnings --silent --disable-nested-config --import-plugin --react-plugin --jsdoc-plugin --jest-plugin --vitest-plugin --jsx-a11y-plugin --nextjs-plugin --react-perf-plugin --promise-plugin --node-plugin --vue-plugin --disable-unicorn-plugin --disable-oxc-plugin --disable-typescript-plugin -c -f -o -v -h -p -A -W -D" -- "${cur_word}") );
return;;
fmt)
COMPREPLY=( $(compgen -f -W "--config --no-config --no-editorconfig --init --doctor --print-width --tab-width --use-tabs --no-semi --single-quote --jsx-single-quote --quote-props --trailing-comma --no-bracket-spacing --bracket-same-line --arrow-parens --object-wrap --single-attribute-per-line --html-whitespace-sensitivity --vue-indent-script-and-style --prose-wrap --embedded-language-formatting --end-of-line --no-insert-final-newline --sort-imports --sort-tailwindcss --sort-package-json --jsdoc --svelte --no-svelte --staged --changed --stdin-filepath --ignore-path --ignore-pattern --with-node-modules --no-error-on-unmatched-pattern --ignore-unknown --allow-unsupported --list-files --cwd --check --list-different --log-level --format --color --no-color --timing --threads --debug-check --no-script --version --help --all --help-all --write --config-precedence --find-config-path --parser --plugin --require-pragma --check-ignore-pragma --insert-pragma --range-start --range-end --cursor-offset --experimental-ternaries --experimental-operator-position --jsx-bracket-same-line --flavor --disable-nested-config -u -c -l -f -v -h -w" -- "${cur_word}") );
Expand Down
2 changes: 2 additions & 0 deletions completions/bun.fish
Original file line number Diff line number Diff line change
Expand Up @@ -228,6 +228,7 @@ complete -c bun -n "__fish_seen_subcommand_from check" -l "threads" -r -d "Numbe
complete -c bun -n "__fish_seen_subcommand_from check" -l "timing" -d "Print load and check times"
complete -c bun -n "__fish_seen_subcommand_from check" -l "cwd" -r -d "Set the working directory"
complete -c bun -n "__fish_seen_subcommand_from check" -l "no-script" -d "Run the type checker even if the project has a check script"
complete -c bun -n "__fish_seen_subcommand_from check" -l "runExternalCode" -d "Run the programs from node_modules that contentMappers in tsconfig.json lists"
complete -c bun -n "__fish_use_subcommand" -a "lint" -d "Lint JavaScript and TypeScript" -f
complete -c bun -n "__fish_seen_subcommand_from lint" -s "c" -l "config" -r -F -d "Use this config file instead of looking for one"
complete -c bun -n "__fish_seen_subcommand_from lint" -l "no-config-lookup" -d "Do not look for a config file"
Expand Down Expand Up @@ -256,6 +257,7 @@ complete -c bun -n "__fish_seen_subcommand_from lint" -s "f" -l "format" -r -d "
complete -c bun -n "__fish_seen_subcommand_from lint" -l "all" -d "Show every problem (pretty and agent group identical problems above 50)"
complete -c bun -n "__fish_seen_subcommand_from lint" -s "o" -l "output-file" -r -F -d "Write the report to a file"
complete -c bun -n "__fish_seen_subcommand_from lint" -l "quiet" -d "Report errors only"
complete -c bun -n "__fish_seen_subcommand_from lint" -l "verbose" -d "Print every note"
complete -c bun -n "__fish_seen_subcommand_from lint" -l "max-warnings" -r -d "Exit with 1 if there are more warnings than this"
complete -c bun -n "__fish_seen_subcommand_from lint" -l "color" -d "Always use colors"
complete -c bun -n "__fish_seen_subcommand_from lint" -l "no-color" -d "Never use colors"
Expand Down
2 changes: 2 additions & 0 deletions completions/bun.zsh
Original file line number Diff line number Diff line change
Expand Up @@ -800,6 +800,7 @@ _bun_check_completion() {
'--timing[Print load and check times]' \
'--cwd[Set the working directory]:cwd:_files -/' \
'--no-script[Run the type checker even if the project has a check script]' \
'--runExternalCode[Run the programs from node_modules that contentMappers in tsconfig.json lists]' \
'--help[Print this help menu]' \
'-h[Print this help menu]' &&
ret=0
Expand Down Expand Up @@ -839,6 +840,7 @@ _bun_lint_completion() {
'--output-file[Write the report to a file]:output-file:_files' \
'-o[Write the report to a file]:output-file:_files' \
'--quiet[Report errors only]' \
'--verbose[Print every note]' \
'--max-warnings[Exit with 1 if there are more warnings than this]:max-warnings' \
'--color[Always use colors]' \
'--no-color[Never use colors]' \
Expand Down
2 changes: 1 addition & 1 deletion docs/guides/lint/migrate-from-eslint.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ export default tseslint.config(...tseslint.configs.recommendedTypeChecked, {
});
```

The types come from Bun's built-in type checker ([`bun check`](/runtime/check)), not from the `typescript` package. It behaves like TypeScript 7.
The types come from Bun's built-in type checker ([`bun check`](/runtime/check)), not from the `typescript` package. It behaves like TypeScript 7.1.

---

Expand Down
1 change: 1 addition & 0 deletions docs/runtime/bunfig.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -602,6 +602,7 @@ Every flag that makes sense as a default is also a key, in camelCase: `--max-war
| `maxWarnings` | number | `--max-warnings` |
| `denyWarnings` | boolean | `--deny-warnings` |
| `quiet` | boolean | `--quiet` |
| `verbose` | boolean | `--verbose` |
| `silent` | boolean | `--silent` |
| `format` | name | `-f`, `--format` |
| `all` | boolean | `--all` |
Expand Down
51 changes: 46 additions & 5 deletions docs/runtime/check.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ title: "Type checking"
description: "Type check your TypeScript project with bun check"
---

`bun check` type checks your TypeScript project. It reads your `tsconfig.json`, reports the same errors as `tsc` from TypeScript 7, and uses every CPU core.
`bun check` type checks your TypeScript project. It reads your `tsconfig.json`, reports the same errors as `tsc` from TypeScript 7.1, and uses every CPU core.

```bash terminal icon="terminal"
bun check
Expand Down Expand Up @@ -89,7 +89,7 @@ Keep `tsc` to generate `.d.ts` files. `bun check` only checks.

### Coming from TypeScript 5

`bun check` behaves like TypeScript 7, whichever version of `typescript` you have installed. TypeScript 6 and 7 changed some defaults and removed some compiler options.
`bun check` behaves like TypeScript 7.1, whichever version of `typescript` you have installed. TypeScript 6 and 7 changed some defaults and removed some compiler options.

Three defaults changed:

Expand Down Expand Up @@ -620,7 +620,7 @@ Then tell your editor to use the version in your project. In VS Code, run **Type

Run the command again after you upgrade Bun, because a new version of Bun can match a newer TypeScript.

If `bun check` and `tsc` from TypeScript 7 report different errors, that is a bug in Bun. [Open an issue on GitHub](https://github.com/oven-sh/bun/issues) with code that shows the difference.
If `bun check` and `tsc` from TypeScript 7.1 report different errors, that is a bug in Bun. [Open an issue on GitHub](https://github.com/oven-sh/bun/issues) with code that shows the difference.

## Compiler options as flags

Expand All @@ -640,17 +640,56 @@ A flag applies to the projects that `bun check` reports. With [`-b`](#every-proj
bun check -b --strict
```

## Vue, Svelte, Astro, and other file types

TypeScript 7.1 adds content mappers. A content mapper is a program from a package in `node_modules` that turns a file TypeScript cannot read, such as a `.vue` file, into TypeScript. `bun check` checks the result and reports each error at the matching line and column of your file.

List the mappers in `tsconfig.json`:

```json tsconfig.json icon="file-json"
{
"contentMappers": [{ "package": "my-vue-mapper", "extensions": [".vue"] }],
"include": ["src/**/*.ts", "src/**/*.vue"]
}
```

Then pass `--runExternalCode`:

```bash terminal icon="terminal"
bun check --runExternalCode
```

```txt
src/App.vue(12,7): error TS2322: Type 'string' is not assignable to type 'number'.
```

<Warning>
`--runExternalCode` lets the project choose programs that run on your computer with your permissions. The
`tsconfig.json` says which packages, and each package's `package.json` says which command. Use the flag only in
projects whose `tsconfig.json` and `node_modules` you trust.
</Warning>

The flag only works on the command line of `bun check`, after `check`. It has no effect in `tsconfig.json`, `bunfig.toml`, `BUN_OPTIONS`, or a response file (`@file`). Without the flag, `bun check` starts nothing and reports TS18068:

```txt
tsconfig.json(2,3): error TS18068: Content mappers require the '--runExternalCode' command line flag to be enabled.
```

`bun --check`, `bun test --check`, `bun build --check`, `Bun.build({ check: true })`, and `bun lint` never run a content mapper.

Each mapper runs once per `bun check`, in its package's directory, and stops when the check ends. A mapper whose command is `node` runs with Bun if `node` is not installed. What it prints to standard error appears in your terminal. `bun check` does not trust what a mapper answers: an answer that is malformed or points outside of the file is an error on that file, and after five such files the mapper is not used again.

## Differences from `tsc`

`bun check` aims to report exactly what `tsc` from TypeScript 7 reports. `process.versions.typescript` is the exact version.
`bun check` aims to report exactly what `tsc` from TypeScript 7.1 reports. `process.versions.typescript` is the exact version.

```bash terminal icon="terminal"
bun -p process.versions.typescript
```

These differences are intentional:

- **`bun check` only checks.** It does not write JavaScript, `.d.ts`, source map, or `.tsbuildinfo` files, even if `declaration` or `incremental` is on. Use [`bun build`](/bundler) to produce JavaScript and `tsc` to produce declaration files.
- **`bun check` only checks.** It does not write JavaScript, `.d.ts`, source map, or `.tsbuildinfo` files, even if `declaration` or `incremental` is on. Use [`bun build`](/bundler) to produce JavaScript and `tsc` to produce declaration files. As with `tsc --noEmit`, errors about declaration files, such as TS4025 or the TS90xx errors of `isolatedDeclarations`, are reported once there are no other errors. `bun check -b` reports them next to other errors, like `tsc -b`, unless the project has `noEmit`.
- **Referenced projects don't have to be built.** `tsc` without `-b` reads the `.d.ts` files that an earlier build wrote, and reports TS6305 if there are none. `bun check` reads the source files.
- **Compiler options work with `-b`.** `tsc -b --strict` reports TS5094. `bun check -b --strict` applies the option to every project.
- **A `tsconfig.json` with nothing but `references` is followed.** `tsc` without `-b` [checks nothing](#a-tsconfigjson-with-nothing-but-references) there.
Expand All @@ -659,6 +698,7 @@ These differences are intentional:
- **An error that one file raises in another file is reported.** `tsc` collects the errors of a file right after it checks that file, so it drops an error that a later file raises in an earlier one. `bun check` reports it.
- **A file that is too long affects no other file.** After TS2563 for the top-level code of one file, `tsc` stops following the types of variables and parameters in the files it checks next, so it drops errors there and reports false ones. `bun check` starts every file afresh.
- **The order of projects does not change their options.** If configuration files extend each other in a circle, both tools report TS18000. `tsc` prints `{0}` where the files belong, and `bun check` lists them. What `tsc -b` then makes of those files for one project depends on which project it loaded first, and it can hang. `bun check -b` gives each project the options it has when you check it alone.
- **A project on a network share is checked.** `tsc` reports TS5116 for every network path, so it refuses each file of a project in `\\server\share`. `bun check` checks that project. It may only name paths on `\\server`, and a path on any other server is still TS5116.
- **The `lib.*.d.ts` files are built in.** An error or a declaration in one of them has a path such as `bundled:///libs/lib.dom.d.ts`, which is not a file on your disk.
- **A note tells you when dependencies are missing.** If an import fails because a package in `package.json` is not installed, `bun check` adds a line that names the `package.json` and says how to run `bun install` for it.
- **A note tells you when type checking did not run.** If a syntax error or an invalid option stops the check, `bun check` adds a line that says [how many files it did not check](#stopped-before-type-checking).
Expand All @@ -681,6 +721,7 @@ bun check [flags] [...files or directories]
| `--no-pretty` | One line per error, like `tsc --pretty false`. Default when piped |
| `--all` | Show every error. Without it, identical errors are grouped above 50 |
| `--threads <n>` | Number of threads. Default: one per CPU core |
| `--runExternalCode` | Run the programs that `contentMappers` in `tsconfig.json` lists |
| `--timing` | Print how long loading and checking took |
| `--cwd <path>` | Set the working directory |
| `--no-script` | Run the type checker even if the project has a `check` script |
Expand Down
4 changes: 4 additions & 0 deletions docs/snippets/cli/lint.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,10 @@ bun lint [flags] [files, directories, or globs]
Report errors only
</ParamField>

<ParamField path="--verbose" type="boolean">
Print every note, also in a run that passes
</ParamField>

<ParamField path="--max-warnings" type="number">
Exit with code 1 if there are more warnings than this
</ParamField>
Expand Down
2 changes: 1 addition & 1 deletion docs/typescript-6.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -80,4 +80,4 @@ Yes. TypeScript 7 carries forward the same default. If you're upgrading directly

## Does this apply to `bun check`?

Yes. [`bun check`](/runtime/check) behaves like TypeScript 7, whichever version of `typescript` you have installed. See [Coming from TypeScript 5](/runtime/check#coming-from-typescript-5) for the other defaults and options that changed.
Yes. [`bun check`](/runtime/check) behaves like TypeScript 7.1, whichever version of `typescript` you have installed. See [Coming from TypeScript 5](/runtime/check#coming-from-typescript-5) for the other defaults and options that changed.
2 changes: 2 additions & 0 deletions src/bun_core/env_var.rs
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,8 @@ new!(pub BUN_DEBUG_QUIET_LOGS: boolean, "BUN_DEBUG_QUIET_LOGS", {});
new!(pub BUN_DEBUG_TEST_STANDALONE_GRAPH_MAX_BYTES: unsigned, "BUN_DEBUG_TEST_STANDALONE_GRAPH_MAX_BYTES", {});
// How long `bun check` runs before it draws its progress line (default 300), so a test can see the line on a small project.
new!(pub BUN_DEBUG_TEST_CHECK_PROGRESS_DELAY_MS: unsigned, "BUN_DEBUG_TEST_CHECK_PROGRESS_DELAY_MS", {});
// How long `bun check --runExternalCode` waits for a content mapper's first answer (default 5000), so a test doesn't.
new!(pub BUN_DEBUG_TEST_CONTENT_MAPPER_TIMEOUT_MS: unsigned, "BUN_DEBUG_TEST_CONTENT_MAPPER_TIMEOUT_MS", {});
new!(pub BUN_DEV_SERVER_TEST_RUNNER: string, "BUN_DEV_SERVER_TEST_RUNNER", {});
// Debug-only: when set, `NumberRenamer` dumps the symbol table before
// renaming (`src/js_printer/renamer.rs`). Presence-checked, value ignored.
Expand Down
Loading
Loading