Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reuse computed type of condition expressions #49881

Merged
merged 1 commit into from Aug 27, 2022

Conversation

JoostK
Copy link
Contributor

@JoostK JoostK commented Jul 12, 2022

Fixes #49845

This change threads the computed type of conditional expressions into checkTestingKnownTruthyCallableOrAwaitableType to avoid recursively revisiting expression subtrees, resulting in an exponential performance drop. The changed code is similar to how it was before #42835.

The test case used to run in ~13s on my laptop before the fix, and now completes instantly again (check time reported as 0.00s)

@typescript-bot typescript-bot added the For Uncommitted Bug PR for untriaged, rejected, closed or missing bug label Jul 12, 2022
@@ -38232,7 +38233,7 @@ namespace ts {
? condExpr.right
: condExpr;
if (isModuleExportsAccessExpression(location)) return;
const type = checkTruthinessExpression(location);
const type = location === condExpr ? condType : checkTruthinessExpression(location);
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If anyone has ideas on how to avoid this checkTruthinessExpression altogether, please let me know.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, that seems tricky because it looks like location is either condExpr, and we already have the type, or it is condExpr.right, and then... we haven't visited yet in the trampoline on onOperator, right?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Indeed, this is my understanding as well. And I don't think that a dynamic programming like approach is worth it here, given the overhead of caching the type of subtrees. Given that the performance issue that manifested itself is mitigated by the current changes I'd consider it fine that we leave this like this, at least until another performance bottleneck is observed.

@DanielRosenwasser
Copy link
Member

@typescript-bot pack this
@typescript-bot test this
@typescript-bot user test this inline
@typescript-bot run dt
@typescript-bot perf test this

1 similar comment
@DanielRosenwasser
Copy link
Member

@typescript-bot pack this
@typescript-bot test this
@typescript-bot user test this inline
@typescript-bot run dt
@typescript-bot perf test this

@typescript-bot
Copy link
Collaborator

typescript-bot commented Jul 15, 2022

Heya @DanielRosenwasser, I've started to run the perf test suite on this PR at a594c6a. You can monitor the build here.

Update: The results are in!

@typescript-bot
Copy link
Collaborator

typescript-bot commented Jul 15, 2022

Heya @DanielRosenwasser, I've started to run the diff-based user code test suite on this PR at a594c6a. You can monitor the build here.

Update: The results are in!

@typescript-bot
Copy link
Collaborator

typescript-bot commented Jul 15, 2022

Heya @DanielRosenwasser, I've started to run the tarball bundle task on this PR at a594c6a. You can monitor the build here.

@typescript-bot
Copy link
Collaborator

typescript-bot commented Jul 15, 2022

Heya @DanielRosenwasser, I've started to run the extended test suite on this PR at a594c6a. You can monitor the build here.

@typescript-bot
Copy link
Collaborator

typescript-bot commented Jul 15, 2022

Heya @DanielRosenwasser, I've started to run the parallelized Definitely Typed test suite on this PR at a594c6a. You can monitor the build here.

@typescript-bot
Copy link
Collaborator

@DanielRosenwasser
The results of the user tests run you requested are in!

Here they are:

Comparison Report - main..refs/pull/49881/merge

[uglify-js]

1 of 1 projects failed to build with the old tsc

/mnt/ts_downloads/uglify-js/tsconfig.json

  • error TS2322: Type 'boolean' is not assignable to type 'never'.
    • /mnt/ts_downloads/uglify-js/node_modules/uglify-js/lib/compress.js(2343,25)

@typescript-bot
Copy link
Collaborator

typescript-bot commented Jul 16, 2022

Hey @DanielRosenwasser, I've packed this into an installable tgz. You can install it for testing by referencing it in your package.json like so:

{
    "devDependencies": {
        "typescript": "https://typescript.visualstudio.com/cf7ac146-d525-443c-b23c-0d58337efebc/_apis/build/builds/129830/artifacts?artifactName=tgz&fileId=C14027BCD436216EF809460CA9E42F089DC3B7ABC32BB7A29F505236DCABEDE302&fileName=/typescript-4.8.0-insiders.20220715.tgz"
    }
}

and then running npm install.


There is also a playground for this build and an npm module you can use via "typescript": "npm:@typescript-deploys/pr-build@4.8.0-pr-49881-8".;

@typescript-bot
Copy link
Collaborator

@DanielRosenwasser
The results of the perf run you requested are in!

Here they are:

Compiler

Comparison Report - main..49881
Metric main 49881 Delta Best Worst
Angular - node (v10.16.3, x64)
Memory used 360,131k (± 0.02%) 360,094k (± 0.02%) -37k (- 0.01%) 359,936k 360,240k
Parse Time 2.09s (± 0.40%) 2.09s (± 0.43%) -0.00s (- 0.19%) 2.07s 2.11s
Bind Time 0.89s (± 1.34%) 0.89s (± 0.91%) +0.00s (+ 0.23%) 0.87s 0.90s
Check Time 5.98s (± 0.46%) 5.98s (± 0.42%) +0.00s (+ 0.02%) 5.93s 6.03s
Emit Time 6.10s (± 0.52%) 6.10s (± 0.61%) -0.00s (- 0.03%) 6.04s 6.21s
Total Time 15.07s (± 0.33%) 15.06s (± 0.28%) -0.00s (- 0.02%) 14.98s 15.15s
Compiler-Unions - node (v10.16.3, x64)
Memory used 206,629k (± 0.04%) 206,647k (± 0.03%) +19k (+ 0.01%) 206,543k 206,758k
Parse Time 0.83s (± 0.84%) 0.83s (± 0.70%) +0.00s (+ 0.24%) 0.82s 0.85s
Bind Time 0.53s (± 1.57%) 0.53s (± 1.29%) 0.00s ( 0.00%) 0.51s 0.54s
Check Time 7.11s (± 0.31%) 7.09s (± 0.61%) -0.02s (- 0.30%) 7.02s 7.18s
Emit Time 2.52s (± 0.90%) 2.49s (± 0.65%) -0.03s (- 1.31%) 2.44s 2.52s
Total Time 10.98s (± 0.36%) 10.93s (± 0.47%) -0.05s (- 0.47%) 10.85s 11.04s
Monaco - node (v10.16.3, x64)
Memory used 344,037k (± 0.01%) 343,987k (± 0.01%) -50k (- 0.01%) 343,854k 344,066k
Parse Time 1.59s (± 0.52%) 1.59s (± 0.38%) 0.00s ( 0.00%) 1.58s 1.61s
Bind Time 0.75s (± 0.86%) 0.75s (± 0.89%) +0.00s (+ 0.13%) 0.75s 0.78s
Check Time 5.97s (± 0.45%) 5.96s (± 0.57%) -0.01s (- 0.13%) 5.90s 6.04s
Emit Time 3.25s (± 0.70%) 3.24s (± 0.89%) -0.02s (- 0.49%) 3.19s 3.33s
Total Time 11.57s (± 0.32%) 11.55s (± 0.41%) -0.02s (- 0.20%) 11.44s 11.62s
TFS - node (v10.16.3, x64)
Memory used 305,165k (± 0.01%) 305,151k (± 0.02%) -14k (- 0.00%) 304,992k 305,296k
Parse Time 1.28s (± 0.58%) 1.28s (± 0.58%) +0.00s (+ 0.23%) 1.27s 1.30s
Bind Time 0.71s (± 0.63%) 0.71s (± 0.78%) 0.00s ( 0.00%) 0.70s 0.73s
Check Time 5.39s (± 0.58%) 5.42s (± 0.50%) +0.02s (+ 0.43%) 5.37s 5.51s
Emit Time 3.40s (± 0.75%) 3.40s (± 1.06%) +0.00s (+ 0.12%) 3.34s 3.48s
Total Time 10.79s (± 0.46%) 10.81s (± 0.60%) +0.03s (+ 0.25%) 10.69s 11.01s
material-ui - node (v10.16.3, x64)
Memory used 469,395k (± 0.01%) 469,425k (± 0.01%) +30k (+ 0.01%) 469,240k 469,510k
Parse Time 1.82s (± 0.42%) 1.83s (± 0.50%) +0.00s (+ 0.22%) 1.81s 1.85s
Bind Time 0.68s (± 1.58%) 0.68s (± 1.54%) +0.00s (+ 0.59%) 0.66s 0.70s
Check Time 14.47s (± 0.41%) 14.48s (± 0.41%) +0.01s (+ 0.07%) 14.39s 14.65s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 16.98s (± 0.40%) 16.99s (± 0.37%) +0.02s (+ 0.12%) 16.89s 17.17s
xstate - node (v10.16.3, x64)
Memory used 581,365k (± 1.25%) 581,230k (± 1.26%) -135k (- 0.02%) 577,622k 610,697k
Parse Time 2.60s (± 0.27%) 2.60s (± 0.36%) -0.00s (- 0.08%) 2.58s 2.62s
Bind Time 1.02s (± 0.58%) 1.02s (± 0.93%) 0.00s ( 0.00%) 1.00s 1.04s
Check Time 1.56s (± 0.53%) 1.55s (± 0.49%) -0.01s (- 0.71%) 1.53s 1.56s
Emit Time 0.07s (± 0.00%) 0.07s (± 0.00%) 0.00s ( 0.00%) 0.07s 0.07s
Total Time 5.24s (± 0.25%) 5.24s (± 0.39%) -0.01s (- 0.13%) 5.19s 5.28s
Angular - node (v12.1.0, x64)
Memory used 337,641k (± 0.02%) 337,712k (± 0.02%) +72k (+ 0.02%) 337,587k 337,859k
Parse Time 2.08s (± 0.59%) 2.09s (± 0.79%) +0.01s (+ 0.38%) 2.06s 2.12s
Bind Time 0.86s (± 1.40%) 0.86s (± 0.72%) +0.00s (+ 0.23%) 0.84s 0.87s
Check Time 5.84s (± 0.41%) 5.83s (± 0.53%) -0.01s (- 0.15%) 5.78s 5.91s
Emit Time 6.39s (± 0.56%) 6.41s (± 1.05%) +0.02s (+ 0.34%) 6.31s 6.61s
Total Time 15.17s (± 0.42%) 15.19s (± 0.63%) +0.02s (+ 0.13%) 15.00s 15.46s
Compiler-Unions - node (v12.1.0, x64)
Memory used 194,265k (± 0.03%) 194,206k (± 0.13%) -59k (- 0.03%) 193,170k 194,374k
Parse Time 0.83s (± 0.58%) 0.83s (± 1.04%) +0.01s (+ 0.60%) 0.82s 0.86s
Bind Time 0.55s (± 1.33%) 0.55s (± 1.10%) -0.00s (- 0.55%) 0.54s 0.56s
Check Time 6.68s (± 0.48%) 6.71s (± 0.74%) +0.03s (+ 0.45%) 6.62s 6.83s
Emit Time 2.57s (± 2.07%) 2.53s (± 1.05%) -0.04s (- 1.44%) 2.47s 2.57s
Total Time 10.62s (± 0.65%) 10.61s (± 0.66%) -0.00s (- 0.02%) 10.48s 10.76s
Monaco - node (v12.1.0, x64)
Memory used 326,958k (± 0.03%) 326,983k (± 0.03%) +25k (+ 0.01%) 326,723k 327,270k
Parse Time 1.59s (± 0.52%) 1.57s (± 0.90%) -0.02s (- 1.01%) 1.53s 1.61s
Bind Time 0.74s (± 0.70%) 0.74s (± 0.78%) -0.00s (- 0.13%) 0.73s 0.75s
Check Time 5.79s (± 0.30%) 5.79s (± 0.32%) -0.00s (- 0.03%) 5.76s 5.84s
Emit Time 3.28s (± 0.37%) 3.28s (± 0.55%) +0.00s (+ 0.03%) 3.25s 3.33s
Total Time 11.40s (± 0.19%) 11.39s (± 0.23%) -0.01s (- 0.12%) 11.32s 11.44s
TFS - node (v12.1.0, x64)
Memory used 289,731k (± 0.02%) 289,646k (± 0.07%) -84k (- 0.03%) 288,866k 289,810k
Parse Time 1.30s (± 0.78%) 1.29s (± 0.54%) -0.01s (- 0.39%) 1.27s 1.30s
Bind Time 0.71s (± 0.96%) 0.72s (± 0.86%) +0.00s (+ 0.56%) 0.71s 0.73s
Check Time 5.33s (± 0.34%) 5.34s (± 0.46%) +0.01s (+ 0.23%) 5.30s 5.41s
Emit Time 3.51s (± 0.88%) 3.52s (± 0.92%) +0.00s (+ 0.11%) 3.45s 3.60s
Total Time 10.85s (± 0.30%) 10.87s (± 0.54%) +0.02s (+ 0.16%) 10.76s 11.04s
material-ui - node (v12.1.0, x64)
Memory used 448,497k (± 0.02%) 448,502k (± 0.02%) +6k (+ 0.00%) 448,337k 448,681k
Parse Time 1.82s (± 0.56%) 1.82s (± 0.58%) +0.00s (+ 0.22%) 1.81s 1.86s
Bind Time 0.67s (± 0.70%) 0.67s (± 0.60%) -0.00s (- 0.15%) 0.66s 0.68s
Check Time 12.99s (± 0.34%) 13.01s (± 0.87%) +0.02s (+ 0.18%) 12.84s 13.40s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 15.48s (± 0.31%) 15.51s (± 0.74%) +0.03s (+ 0.16%) 15.32s 15.90s
xstate - node (v12.1.0, x64)
Memory used 546,741k (± 1.32%) 543,370k (± 0.02%) -3,371k (- 0.62%) 543,242k 543,688k
Parse Time 2.56s (± 0.57%) 2.54s (± 0.45%) -0.02s (- 0.82%) 2.52s 2.56s
Bind Time 1.03s (± 1.11%) 1.03s (± 0.94%) -0.00s (- 0.10%) 1.01s 1.05s
Check Time 1.50s (± 0.71%) 1.48s (± 0.59%) -0.01s (- 0.87%) 1.46s 1.50s
Emit Time 0.07s (± 0.00%) 0.07s (± 4.13%) +0.00s (+ 2.86%) 0.07s 0.08s
Total Time 5.16s (± 0.42%) 5.13s (± 0.30%) -0.03s (- 0.58%) 5.11s 5.18s
Angular - node (v14.15.1, x64)
Memory used 335,941k (± 0.01%) 335,929k (± 0.01%) -13k (- 0.00%) 335,856k 336,016k
Parse Time 2.06s (± 0.50%) 2.06s (± 0.56%) +0.00s (+ 0.05%) 2.04s 2.09s
Bind Time 0.90s (± 0.66%) 0.89s (± 0.55%) -0.00s (- 0.22%) 0.89s 0.91s
Check Time 5.81s (± 0.52%) 5.80s (± 0.54%) -0.01s (- 0.21%) 5.72s 5.87s
Emit Time 6.38s (± 0.45%) 6.35s (± 0.58%) -0.03s (- 0.42%) 6.30s 6.46s
Total Time 15.14s (± 0.36%) 15.10s (± 0.28%) -0.04s (- 0.26%) 15.00s 15.20s
Compiler-Unions - node (v14.15.1, x64)
Memory used 192,871k (± 0.01%) 192,872k (± 0.01%) +1k (+ 0.00%) 192,834k 192,926k
Parse Time 0.85s (± 0.82%) 0.85s (± 0.53%) -0.00s (- 0.35%) 0.84s 0.86s
Bind Time 0.57s (± 0.88%) 0.57s (± 0.78%) +0.00s (+ 0.53%) 0.56s 0.58s
Check Time 6.70s (± 0.40%) 6.71s (± 0.51%) +0.01s (+ 0.12%) 6.60s 6.77s
Emit Time 2.48s (± 0.84%) 2.48s (± 0.74%) +0.00s (+ 0.08%) 2.42s 2.51s
Total Time 10.60s (± 0.38%) 10.60s (± 0.45%) +0.01s (+ 0.07%) 10.44s 10.68s
Monaco - node (v14.15.1, x64)
Memory used 325,743k (± 0.00%) 325,718k (± 0.01%) -25k (- 0.01%) 325,670k 325,767k
Parse Time 1.58s (± 0.57%) 1.58s (± 0.43%) 0.00s ( 0.00%) 1.56s 1.59s
Bind Time 0.78s (± 0.57%) 0.78s (± 0.57%) +0.00s (+ 0.00%) 0.77s 0.79s
Check Time 5.66s (± 0.32%) 5.68s (± 0.52%) +0.02s (+ 0.39%) 5.62s 5.77s
Emit Time 3.35s (± 0.70%) 3.40s (± 1.11%) +0.04s (+ 1.25%) 3.34s 3.53s
Total Time 11.37s (± 0.31%) 11.44s (± 0.58%) +0.07s (+ 0.58%) 11.30s 11.65s
TFS - node (v14.15.1, x64)
Memory used 288,814k (± 0.01%) 288,820k (± 0.01%) +6k (+ 0.00%) 288,783k 288,850k
Parse Time 1.33s (± 1.84%) 1.32s (± 1.48%) -0.00s (- 0.38%) 1.29s 1.36s
Bind Time 0.77s (± 4.15%) 0.75s (± 1.85%) -0.02s (- 2.34%) 0.73s 0.80s
Check Time 5.33s (± 0.49%) 5.34s (± 0.65%) +0.01s (+ 0.21%) 5.31s 5.46s
Emit Time 3.58s (± 2.16%) 3.57s (± 2.09%) -0.01s (- 0.17%) 3.44s 3.73s
Total Time 11.01s (± 0.80%) 10.99s (± 0.82%) -0.02s (- 0.18%) 10.85s 11.25s
material-ui - node (v14.15.1, x64)
Memory used 446,662k (± 0.01%) 446,344k (± 0.08%) -318k (- 0.07%) 445,257k 446,623k
Parse Time 1.88s (± 0.25%) 1.88s (± 0.32%) -0.00s (- 0.11%) 1.86s 1.89s
Bind Time 0.72s (± 1.32%) 0.73s (± 1.23%) +0.00s (+ 0.14%) 0.72s 0.76s
Check Time 13.17s (± 0.76%) 13.12s (± 0.58%) -0.05s (- 0.36%) 12.93s 13.30s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 15.77s (± 0.68%) 15.72s (± 0.49%) -0.05s (- 0.33%) 15.52s 15.89s
xstate - node (v14.15.1, x64)
Memory used 541,310k (± 0.00%) 541,248k (± 0.00%) -62k (- 0.01%) 541,210k 541,288k
Parse Time 2.60s (± 0.34%) 2.60s (± 0.45%) +0.01s (+ 0.27%) 2.58s 2.63s
Bind Time 1.15s (± 1.26%) 1.15s (± 0.78%) -0.01s (- 0.69%) 1.13s 1.16s
Check Time 1.54s (± 0.24%) 1.53s (± 0.48%) -0.02s (- 1.04%) 1.51s 1.54s
Emit Time 0.07s (± 4.13%) 0.07s (± 4.13%) 0.00s ( 0.00%) 0.07s 0.08s
Total Time 5.37s (± 0.43%) 5.35s (± 0.36%) -0.02s (- 0.28%) 5.33s 5.41s
System
Machine Namets-ci-ubuntu
Platformlinux 4.4.0-210-generic
Architecturex64
Available Memory16 GB
Available Memory15 GB
CPUs4 × Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz
Hosts
  • node (v10.16.3, x64)
  • node (v12.1.0, x64)
  • node (v14.15.1, x64)
Scenarios
  • Angular - node (v10.16.3, x64)
  • Angular - node (v12.1.0, x64)
  • Angular - node (v14.15.1, x64)
  • Compiler-Unions - node (v10.16.3, x64)
  • Compiler-Unions - node (v12.1.0, x64)
  • Compiler-Unions - node (v14.15.1, x64)
  • Monaco - node (v10.16.3, x64)
  • Monaco - node (v12.1.0, x64)
  • Monaco - node (v14.15.1, x64)
  • TFS - node (v10.16.3, x64)
  • TFS - node (v12.1.0, x64)
  • TFS - node (v14.15.1, x64)
  • material-ui - node (v10.16.3, x64)
  • material-ui - node (v12.1.0, x64)
  • material-ui - node (v14.15.1, x64)
  • xstate - node (v10.16.3, x64)
  • xstate - node (v12.1.0, x64)
  • xstate - node (v14.15.1, x64)
Benchmark Name Iterations
Current 49881 10
Baseline main 10

TSServer

Comparison Report - main..49881
Metric main 49881 Delta Best Worst
xstateTSServer - node (v10.16.3, x64)
Initial load time 2,157.70ms (± 0.38%) 2,155.90ms (± 0.22%) -1.80ms (- 0.08%) 2,145.00ms 2,164.00ms
Geterr time 761.80ms (± 0.39%) 754.90ms (± 0.36%) -6.90ms (- 0.91%) 747.00ms 761.00ms
References time 96.10ms (± 1.36%) 94.40ms (± 1.54%) -1.70ms (- 1.77%) 92.00ms 99.00ms
Navto time 252.50ms (± 0.78%) 251.40ms (± 0.55%) -1.10ms (- 0.44%) 249.00ms 255.00ms
Navto count 256.00 (± 0.00%) 256.00 (± 0.00%) 0.00 ( 0.00%) 256.00 256.00
Completions time 244.90ms (± 1.61%) 245.00ms (± 1.43%) +0.10ms (+ 0.04%) 235.00ms 251.00ms
Completions count 3,205.00 (± 0.00%) 3,205.00 (± 0.00%) 0.00 ( 0.00%) 3,205.00 3,205.00
xstateTSServer - node (v12.1.0, x64)
Initial load time 2,099.50ms (± 0.55%) 2,086.40ms (± 0.48%) -13.10ms (- 0.62%) 2,067.00ms 2,111.00ms
Geterr time 747.90ms (± 0.43%) 737.10ms (± 0.40%) -10.80ms (- 1.44%) 730.00ms 745.00ms
References time 67.60ms (± 0.88%) 66.40ms (± 2.79%) -1.20ms (- 1.78%) 64.00ms 73.00ms
Navto time 239.90ms (± 1.54%) 240.00ms (± 1.40%) +0.10ms (+ 0.04%) 229.00ms 244.00ms
Navto count 256.00 (± 0.00%) 256.00 (± 0.00%) 0.00 ( 0.00%) 256.00 256.00
Completions time 239.30ms (± 0.74%) 241.60ms (± 1.09%) +2.30ms (+ 0.96%) 235.00ms 248.00ms
Completions count 3,205.00 (± 0.00%) 3,205.00 (± 0.00%) 0.00 ( 0.00%) 3,205.00 3,205.00
xstateTSServer - node (v14.15.1, x64)
Initial load time 2,213.80ms (± 0.38%) 2,224.70ms (± 0.49%) +10.90ms (+ 0.49%) 2,205.00ms 2,246.00ms
Geterr time 771.70ms (± 0.33%) 758.80ms (± 0.34%) -12.90ms (- 1.67%) 753.00ms 763.00ms
References time 64.90ms (± 1.08%) 67.30ms (± 1.11%) +2.40ms (+ 3.70%) 65.00ms 69.00ms
Navto time 251.60ms (± 0.35%) 247.30ms (± 0.75%) -4.30ms (- 1.71%) 243.00ms 251.00ms
Navto count 256.00 (± 0.00%) 256.00 (± 0.00%) 0.00 ( 0.00%) 256.00 256.00
Completions time 241.20ms (± 0.49%) 241.50ms (± 0.42%) +0.30ms (+ 0.12%) 239.00ms 244.00ms
Completions count 3,205.00 (± 0.00%) 3,205.00 (± 0.00%) 0.00 ( 0.00%) 3,205.00 3,205.00
System
Machine Namets-ci-ubuntu
Platformlinux 4.4.0-210-generic
Architecturex64
Available Memory16 GB
Available Memory15 GB
CPUs4 × Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz
Hosts
  • node (v10.16.3, x64)
  • node (v12.1.0, x64)
  • node (v14.15.1, x64)
Scenarios
  • xstateTSServer - node (v10.16.3, x64)
  • xstateTSServer - node (v12.1.0, x64)
  • xstateTSServer - node (v14.15.1, x64)
Benchmark Name Iterations
Current 49881 10
Baseline main 10

Developer Information:

Download Benchmark

@JoostK
Copy link
Contributor Author

JoostK commented Jul 18, 2022

Just a heads up: I'll be on vacation for the next couple of weeks so won't be able to update this PR in the meantime. Feel free to push additional changes if needed, open another PR, or just wait until I'm back.

@sandersn sandersn added this to Not started in PR Backlog Jul 20, 2022
@sandersn sandersn moved this from Not started to Waiting on reviewers in PR Backlog Jul 27, 2022
PR Backlog automation moved this from Waiting on reviewers to Needs merge Jul 28, 2022
Copy link
Member

@gabritto gabritto left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me, thanks for this contribution!
Let's wait for the experts.

@@ -0,0 +1,5 @@
// @strictNullChecks: true
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder if we have a better way of capturing this kind of test, where the thing we're interested in is the execution time.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Historically we don't - but tests do have a timeout (around 50s), so if you make sure they're large enough to hit the timeout before your change, they're a decent test; they won't capture tiny pretty regressions, but will prevent big ones. We have other tests in this vein.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok then. @JoostK can you make this example much much bigger, so that the test would timeout without the change?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I will add 4 additional binary ops, which would have brought check times up by a factor of 16 (easily pushing it beyond the 50s threshold)

if (!strictNullChecks) return;
if (!(getTypeFacts(condType) & TypeFacts.Truthy)) return;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shouldn't this check only be done if location is ultimately condExpr?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think you are correct; as this check is indeed also done within helper based on the resolved type. Removing this.

@sandersn sandersn moved this from Needs merge to Waiting on author in PR Backlog Aug 9, 2022
@imirkin
Copy link

imirkin commented Aug 23, 2022

@JoostK apologies if you're still on vacation, but any plans on updating this change? If not I guess I could try, but I'm not at all familiar with TS internals...

@JoostK JoostK force-pushed the perf/recursive-function-checks branch from a594c6a to dd5a78b Compare August 26, 2022 21:09
@JoostK
Copy link
Contributor Author

JoostK commented Aug 26, 2022

I have incorporated the feedback in the latest update, PTAL.

PR Backlog automation moved this from Waiting on author to Needs merge Aug 26, 2022
@weswigham weswigham merged commit 71b2ba6 into microsoft:main Aug 27, 2022
12 checks passed
PR Backlog automation moved this from Needs merge to Done Aug 27, 2022
crapStone pushed a commit to Calciumdibromid/CaBr2 that referenced this pull request Jan 12, 2023
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [typescript](https://www.typescriptlang.org/) ([source](https://github.com/Microsoft/TypeScript)) | devDependencies | minor | [`4.8.4` -> `4.9.4`](https://renovatebot.com/diffs/npm/typescript/4.8.4/4.9.4) |

---

### Release Notes

<details>
<summary>Microsoft/TypeScript</summary>

### [`v4.9.4`](https://github.com/microsoft/TypeScript/releases/tag/v4.9.4): TypeScript 4.9.4

[Compare Source](https://github.com/Microsoft/TypeScript/compare/v4.9.3...v4.9.4)

For release notes, check out the [release announcement](https://devblogs.microsoft.com/typescript/announcing-typescript-4-9).

For the complete list of fixed issues, check out the

-   [fixed issues query for Typescript v4.9.4](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=is%3Aissue+milestone%3A%22TypeScript+4.9.4%22+is%3Aclosed+).

Downloads are available on:

-   [npm](https://www.npmjs.com/package/typescript)
-   [NuGet package](https://www.nuget.org/packages/Microsoft.TypeScript.MSBuild)

#### Changes:

-   [`e286821`](https://github.com/Microsoft/TypeScript/commit/e2868216f637e875a74c675845625eb15dcfe9a2) Bump version to 4.9.4 and LKG.
-   [`eb5419f`](https://github.com/Microsoft/TypeScript/commit/eb5419fc8d980859b98553586dfb5f40d811a745) Cherry-pick [#&#8203;51704](https://github.com/Microsoft/TypeScript/issues/51704) to release 4.9 ([#&#8203;51712](https://github.com/Microsoft/TypeScript/issues/51712))
-   [`b4d382b`](https://github.com/Microsoft/TypeScript/commit/b4d382b9b12460adf2da4cc0d1429cf19f8dc8be) Cherry-pick changes for narrowing to tagged literal types.
-   [`e7a02f4`](https://github.com/Microsoft/TypeScript/commit/e7a02f43fce47e1a39259ada5460bcc33c8e98b5) Port of [#&#8203;51626](https://github.com/Microsoft/TypeScript/issues/51626) and [#&#8203;51689](https://github.com/Microsoft/TypeScript/issues/51689) to release-4.9 ([#&#8203;51627](https://github.com/Microsoft/TypeScript/issues/51627))
-   [`1727912`](https://github.com/Microsoft/TypeScript/commit/1727912f0437a7f367d90040fc4b0b4f3efd017a) Cherry-pick fix around `visitEachChild` to release-4.9. ([#&#8203;51544](https://github.com/Microsoft/TypeScript/issues/51544))

This list of changes was [auto generated](https://typescript.visualstudio.com/cf7ac146-d525-443c-b23c-0d58337efebc/\_release?releaseId=117&\_a=release-summary).

### [`v4.9.3`](https://github.com/microsoft/TypeScript/releases/tag/v4.9.3): TypeScript 4.9

[Compare Source](https://github.com/Microsoft/TypeScript/compare/v4.8.4...v4.9.3)

For release notes, check out the [release announcement](https://devblogs.microsoft.com/typescript/announcing-typescript-4-9/).

Downloads are available on:

-   [npm](https://www.npmjs.com/package/typescript)
-   [NuGet package](https://www.nuget.org/packages/Microsoft.TypeScript.MSBuild)

#### Changes:

-   [`93bd577`](https://github.com/Microsoft/TypeScript/commit/93bd577458d55cd720b2677705feab5c91eb12ce) Bump version to 4.9.3 and LKG.
-   [`107f832`](https://github.com/Microsoft/TypeScript/commit/107f832b80df2dc97748021cb00af2b6813db75b) Update LKG.
-   [`31bee56`](https://github.com/Microsoft/TypeScript/commit/31bee5682df130a14ffdd5742f994dbe7313dd0e) Cherry-pick PR [#&#8203;50977](https://github.com/Microsoft/TypeScript/issues/50977) into release-4.9 ([#&#8203;51363](https://github.com/Microsoft/TypeScript/issues/51363)) \[ [#&#8203;50872](https://github.com/Microsoft/TypeScript/issues/50872) ]
-   [`1e2fa7a`](https://github.com/Microsoft/TypeScript/commit/1e2fa7ae15f8530910fef8b916ec8a4ed0b59c45) Update version to 4.9.2-rc and LKG.
-   [`7ab89e5`](https://github.com/Microsoft/TypeScript/commit/7ab89e5c6e401d161f31f28a6c555a3ba530910e) Merge remote-tracking branch 'origin/main' into release-4.9
-   [`e5cd686`](https://github.com/Microsoft/TypeScript/commit/e5cd686defb1a4cbdb36bd012357ba5bed28f371) Update package-lock.json
-   [`8d40dc1`](https://github.com/Microsoft/TypeScript/commit/8d40dc15d1b9945837e7860320fdccfe27c40cad) Update package-lock.json
-   [`5cfb3a2`](https://github.com/Microsoft/TypeScript/commit/5cfb3a2fe344a5350734305193e6cc99516285ca) Only call return() for an abrupt completion in user code ([#&#8203;51297](https://github.com/Microsoft/TypeScript/issues/51297))
-   [`a7a9d15`](https://github.com/Microsoft/TypeScript/commit/a7a9d158e817fcb0e94dc1c24e0a401b21be0cc9) Fix for broken baseline in yieldInForInInDownlevelGenerator ([#&#8203;51345](https://github.com/Microsoft/TypeScript/issues/51345))
-   [`7f8426f`](https://github.com/Microsoft/TypeScript/commit/7f8426f4df0d0a7dd8b72079dafc3e60164a23b1) fix for-in enumeration containing yield in generator ([#&#8203;51295](https://github.com/Microsoft/TypeScript/issues/51295))

<details><summary><b>See More</b></summary>

-   [`3d2b401`](https://github.com/Microsoft/TypeScript/commit/3d2b4017eb6b9a2b94bc673291e56ae95e8beddd) Fix assertion functions accessed via wildcard imports ([#&#8203;51324](https://github.com/Microsoft/TypeScript/issues/51324))
-   [`64d0d5a`](https://github.com/Microsoft/TypeScript/commit/64d0d5ae140b7b26a09e75114517b418d6bcaa9f) fix(51301): Fixing an unused import at the end of a line removes the newline ([#&#8203;51320](https://github.com/Microsoft/TypeScript/issues/51320))
-   [`754eeb2`](https://github.com/Microsoft/TypeScript/commit/754eeb2986bde30d5926e0fa99c87dda9266d01b) Update CodeQL workflow and configuration, fix found bugs ([#&#8203;51263](https://github.com/Microsoft/TypeScript/issues/51263))
-   [`d8aad26`](https://github.com/Microsoft/TypeScript/commit/d8aad262006ad2d2c91aa7a0e4449b4b83c57f7b) Update package-lock.json
-   [`d4f26c8`](https://github.com/Microsoft/TypeScript/commit/d4f26c840b1db76c0b25a405c8e73830a2b45cbc) fix(51245): Class with parameter decorator in arrow function causes "convert to default export" refactoring failure ([#&#8203;51256](https://github.com/Microsoft/TypeScript/issues/51256))
-   [`16faf45`](https://github.com/Microsoft/TypeScript/commit/16faf45682173ea437a50330feb4785578923d7f) Update package-lock.json
-   [`8b1ecdb`](https://github.com/Microsoft/TypeScript/commit/8b1ecdb701e2a2e19e9f8bcdd6b2beac087eabee) fix(50654): "Move to a new file" breaks the declaration of referenced variable ([#&#8203;50681](https://github.com/Microsoft/TypeScript/issues/50681))
-   [`170a17f`](https://github.com/Microsoft/TypeScript/commit/170a17fad57eae619c5ef2b7bdb3ac00d6c32c47) Dom update 2022-10-25 ([#&#8203;51300](https://github.com/Microsoft/TypeScript/issues/51300))
-   [`9c4e14d`](https://github.com/Microsoft/TypeScript/commit/9c4e14d75174432f6a4dc5967a09712a6784ab88) Remove "No type information for this code" from baseline ([#&#8203;51311](https://github.com/Microsoft/TypeScript/issues/51311))
-   [`88d25b4`](https://github.com/Microsoft/TypeScript/commit/88d25b4f232929df59729156dfda6b65277affec) fix(50068): Refactors trigger debug failure when JSX text has a ' and a tag on the same line. ([#&#8203;51299](https://github.com/Microsoft/TypeScript/issues/51299))
-   [`8bee69a`](https://github.com/Microsoft/TypeScript/commit/8bee69acf410d4986cb0cc102b949e2d133d5380) Update package-lock.json
-   [`702de1e`](https://github.com/Microsoft/TypeScript/commit/702de1eeaaef88a189e4d06e5a2aae287853790a) Fix early call to return/throw on generator ([#&#8203;51294](https://github.com/Microsoft/TypeScript/issues/51294))
-   [`2c12b14`](https://github.com/Microsoft/TypeScript/commit/2c12b1499908ad7718e65d20e264561207c22375) Add a GH Action to file a new issue if we go a week without seeing a typescript-error-deltas issue ([#&#8203;51271](https://github.com/Microsoft/TypeScript/issues/51271))
-   [`6af270d`](https://github.com/Microsoft/TypeScript/commit/6af270dee09d62516f6dc02ec102a745ffebc037) Update package-lock.json
-   [`2cc4c16`](https://github.com/Microsoft/TypeScript/commit/2cc4c16a26672a7ba6c97ba16309fcf334db7cae) Update package-lock.json
-   [`6093491`](https://github.com/Microsoft/TypeScript/commit/60934915d9ccc4ca9c0fb2cd060d7ec81601942b) Fix apparent typo in getStringMappingType ([#&#8203;51248](https://github.com/Microsoft/TypeScript/issues/51248))
-   [`61c2609`](https://github.com/Microsoft/TypeScript/commit/61c26096e3373719ece686b84c698423890e9a5f) Update package-lock.json
-   [`ef69116`](https://github.com/Microsoft/TypeScript/commit/ef69116c41cb6805f89e6592eacb0ccb7f02207d) Generate shortest `rootDirs` module specifier instead of first possible ([#&#8203;51244](https://github.com/Microsoft/TypeScript/issues/51244))
-   [`bbb42f4`](https://github.com/Microsoft/TypeScript/commit/bbb42f453dc684e03d977c5b70391124d57543a9) Fix typo in canWatchDirectoryOrFile found by CodeQL ([#&#8203;51262](https://github.com/Microsoft/TypeScript/issues/51262))
-   [`a56b254`](https://github.com/Microsoft/TypeScript/commit/a56b254ad3c52b598bc5d44f83f3d0a1cf806068) Include 'this' type parameter in isRelatedTo fast path ([#&#8203;51230](https://github.com/Microsoft/TypeScript/issues/51230))
-   [`3abd351`](https://github.com/Microsoft/TypeScript/commit/3abd351c0eea55758f27ee5558a4a1525b77f45b) Fix super property transform in async arrow in method ([#&#8203;51240](https://github.com/Microsoft/TypeScript/issues/51240))
-   [`eed0511`](https://github.com/Microsoft/TypeScript/commit/eed05112180e0d94f78aa02d676d49468f15dc31) Update package-lock.json
-   [`2625c1f`](https://github.com/Microsoft/TypeScript/commit/2625c1feae25aede35465ca835440fc57bf13d52) Make the init config category order predictable ([#&#8203;51247](https://github.com/Microsoft/TypeScript/issues/51247))
-   [`1ca99b3`](https://github.com/Microsoft/TypeScript/commit/1ca99b34029dafad2c18af7bdc0711f4abf7e522) fix(50551): Destructuring assignment with var bypasses "variable is used before being assigned" check (2454) ([#&#8203;50560](https://github.com/Microsoft/TypeScript/issues/50560))
-   [`3f28fa1`](https://github.com/Microsoft/TypeScript/commit/3f28fa12dfecb8dfd66ce4684bf26f64e1f092f1) Update package-lock.json
-   [`906ebe4`](https://github.com/Microsoft/TypeScript/commit/906ebe49334a3a9c2dbd73cd3c902898bc712b66) Revert structuredTypeRelatedTo change and fix isUnitLikeType ([#&#8203;51076](https://github.com/Microsoft/TypeScript/issues/51076))
-   [`8ac4652`](https://github.com/Microsoft/TypeScript/commit/8ac465239f52de1da3ada8cdc4c3f107f4d62e45) change type ([#&#8203;51231](https://github.com/Microsoft/TypeScript/issues/51231))
-   [`245a02c`](https://github.com/Microsoft/TypeScript/commit/245a02cbed7ad50a21289730159abc8d19a66f40) fix(51222): Go-to-definition on return statements should jump to the containing function declaration ([#&#8203;51227](https://github.com/Microsoft/TypeScript/issues/51227))
-   [`2dff34e`](https://github.com/Microsoft/TypeScript/commit/2dff34e8c4a91c0005ca9ccfb7e045e225b6f2e4) markAliasReferenced should include ExportValue as well ([#&#8203;51219](https://github.com/Microsoft/TypeScript/issues/51219))
-   [`5ef2634`](https://github.com/Microsoft/TypeScript/commit/5ef2634f3df138323383c7f2e5a05163a924ee86) Update package-lock.json
-   [`d0f0e35`](https://github.com/Microsoft/TypeScript/commit/d0f0e35c88ae017fc4c1213eb2f83303ee22ebde) Remove old tslint comments ([#&#8203;51220](https://github.com/Microsoft/TypeScript/issues/51220))
-   [`85d405a`](https://github.com/Microsoft/TypeScript/commit/85d405a1d74c0730a9d8d6307b26e8d6f3f75421) Fixed a false positive "await has no effect on the type" diagnostic with mixed generic union ([#&#8203;50833](https://github.com/Microsoft/TypeScript/issues/50833))
-   [`1f8959f`](https://github.com/Microsoft/TypeScript/commit/1f8959f5dc04b2b2c2fc8a7dc53b6ac761e1f754) fix: avoid downleveled dynamic import closing over specifier expression ([#&#8203;49663](https://github.com/Microsoft/TypeScript/issues/49663))
-   [`11066b2`](https://github.com/Microsoft/TypeScript/commit/11066b264f5d30fb5ac1f6c2f3a155c0190e75d2) Rename internal functions to `narrowTypeBySwitchOnTypeOf` and `narrowTypeByInKeyword` ([#&#8203;51215](https://github.com/Microsoft/TypeScript/issues/51215))
-   [`4c9afe8`](https://github.com/Microsoft/TypeScript/commit/4c9afe8812fcdb4658472ccbced4a5cd4bae70ea) Update package-lock.json
-   [`f25bcb7`](https://github.com/Microsoft/TypeScript/commit/f25bcb7c27d78ce89e9c9356d27058cf86dbfb5c) fix(49196): add jsdoc snippet for interface member functions ([#&#8203;51135](https://github.com/Microsoft/TypeScript/issues/51135))
-   [`7406ee9`](https://github.com/Microsoft/TypeScript/commit/7406ee9c145cd7d6117391818d5a1eca2d66ca8f) fix(51170): Completing an unimplemented property overwrites rest of line ([#&#8203;51175](https://github.com/Microsoft/TypeScript/issues/51175))
-   [`a1d82fc`](https://github.com/Microsoft/TypeScript/commit/a1d82fc9dcced6ca6bde6e21c385d152d083679f) Remove some unnecessary code discovered by rollup ([#&#8203;51204](https://github.com/Microsoft/TypeScript/issues/51204))
-   [`0481773`](https://github.com/Microsoft/TypeScript/commit/0481773a27fc6a0132c34502fd2a3b0c73cf63a3) LEGO: Merge pull request 51200
-   [`98c19cb`](https://github.com/Microsoft/TypeScript/commit/98c19cbbbe83c2ae3c89a4e08317a4b9ccbcb206) LEGO: Merge pull request 51190
-   [`13c9b05`](https://github.com/Microsoft/TypeScript/commit/13c9b05384544262363f3fd8b942b36aeb84fc61) Update package-lock.json
-   [`673475e`](https://github.com/Microsoft/TypeScript/commit/673475e1c5e582f2fd0bf8d89e33c7708607c8d8) Update package-lock.json
-   [`f6cf510`](https://github.com/Microsoft/TypeScript/commit/f6cf51053e024714dd6b8463fe6f8e7e33461e6b) Add more tracing to node16/nodenext resolution ([#&#8203;51168](https://github.com/Microsoft/TypeScript/issues/51168))
-   [`83c5581`](https://github.com/Microsoft/TypeScript/commit/83c5581588f660247bd9648bafe67b49de060a55) Update package-lock.json
-   [`be5f0fe`](https://github.com/Microsoft/TypeScript/commit/be5f0fe5acfed5146514ebe7c1b65529def8e490) Add an extra regression test for awaited unresolvable recursive union ([#&#8203;51167](https://github.com/Microsoft/TypeScript/issues/51167))
-   [`2cb7e77`](https://github.com/Microsoft/TypeScript/commit/2cb7e779d70d57ef0d46dd3f768e646b8bbe783a) fix(50416): correctly names disabled export refactors ([#&#8203;50663](https://github.com/Microsoft/TypeScript/issues/50663)) \[ [#&#8203;50416](https://github.com/Microsoft/TypeScript/issues/50416) ]
-   [`2bcfed0`](https://github.com/Microsoft/TypeScript/commit/2bcfed01f3458996e71ce37af43e3495cb7e4950) feat(37440): Provide a quick-fix for non-exported types ([#&#8203;51038](https://github.com/Microsoft/TypeScript/issues/51038))
-   [`a24201c`](https://github.com/Microsoft/TypeScript/commit/a24201c8ef6f82b5729ab677b7a1a1d6d745fcb8) Remove VSDevMode.ps1 and createPlaygroundBuild ([#&#8203;51166](https://github.com/Microsoft/TypeScript/issues/51166))
-   [`2da62a7`](https://github.com/Microsoft/TypeScript/commit/2da62a784bbba237b8239e84c8629cfafb0f595e) fix(51112): omit parameter names that precede the type ([#&#8203;51142](https://github.com/Microsoft/TypeScript/issues/51142))
-   [`cf1b6b7`](https://github.com/Microsoft/TypeScript/commit/cf1b6b73330eab2dd484d71cbdb662a83b3c726f) feat(51163): show QF to fill in the missing properties for the mapped type. ([#&#8203;51165](https://github.com/Microsoft/TypeScript/issues/51165))
-   [`bdcc240`](https://github.com/Microsoft/TypeScript/commit/bdcc240d68245e4be865b385bd6a8fd8fa546f56) Remove bug-causing carve-out in conditional type instantiation that hopefully is no longer required ([#&#8203;51151](https://github.com/Microsoft/TypeScript/issues/51151))
-   [`37317a2`](https://github.com/Microsoft/TypeScript/commit/37317a208f34c141b64e26d0e92b3aed346e531f) Check nested weak types in intersections on target side of relation ([#&#8203;51140](https://github.com/Microsoft/TypeScript/issues/51140))
-   [`9f49f9c`](https://github.com/Microsoft/TypeScript/commit/9f49f9ccb05a7bb56b8ca84b8036a3ad4e0e7c2b) Update package-lock.json
-   [`4f54e7e`](https://github.com/Microsoft/TypeScript/commit/4f54e7e947298162d29f3104265e74dcfbc90d82) Fix isExhaustiveSwitchStatement to better handle circularities ([#&#8203;51095](https://github.com/Microsoft/TypeScript/issues/51095))
-   [`503604c`](https://github.com/Microsoft/TypeScript/commit/503604c884bd0557c851b11b699ef98cdb65b93b) Overloads shouldn't gain [@&#8203;deprecated](https://github.com/deprecated) tags of other overloads in quick info ([#&#8203;50904](https://github.com/Microsoft/TypeScript/issues/50904))
-   [`e14a229`](https://github.com/Microsoft/TypeScript/commit/e14a2298c5add93816c6f487bcfc5ac72e3a4c59) Update package-lock.json
-   [`67256e5`](https://github.com/Microsoft/TypeScript/commit/67256e50c41aa9178a60c52de8416477f070b190) Remove unused declarations array in extractSymbol's TargetRange ([#&#8203;51091](https://github.com/Microsoft/TypeScript/issues/51091))
-   [`9c87ded`](https://github.com/Microsoft/TypeScript/commit/9c87ded2b3fc4ba4a9a7656e9be39d5e404e6ab6) fix(51100): ensure tsserver shuts down when parent process is killed ([#&#8203;51107](https://github.com/Microsoft/TypeScript/issues/51107))
-   [`c01ae01`](https://github.com/Microsoft/TypeScript/commit/c01ae01fac37268bac3362fb6e6d26db730f7ed5) Fix nightly publish oops in Gulpfile ([#&#8203;51131](https://github.com/Microsoft/TypeScript/issues/51131))
-   [`a7d10f1`](https://github.com/Microsoft/TypeScript/commit/a7d10f15bbd28166b869ae00482214e360891613) Update package-lock.json
-   [`d0bfd8c`](https://github.com/Microsoft/TypeScript/commit/d0bfd8caed521bfd24fc44960d9936a891744bb7) fix(51072): ts.preProcessFile finds import in template string after conditional expression with template strings ([#&#8203;51082](https://github.com/Microsoft/TypeScript/issues/51082))
-   [`ad56b5c`](https://github.com/Microsoft/TypeScript/commit/ad56b5ca56b763ab377e07121ecfebb457a2e810) Convert scripts/Gulpfile to checked mjs/cjs so they can run without compilation ([#&#8203;50988](https://github.com/Microsoft/TypeScript/issues/50988))
-   [`dbeae5d`](https://github.com/Microsoft/TypeScript/commit/dbeae5d943c784661862c52b8e215a2907c31a33) fix(51017): Make lineText in the references response opt-out ([#&#8203;51081](https://github.com/Microsoft/TypeScript/issues/51081))
-   [`d06a592`](https://github.com/Microsoft/TypeScript/commit/d06a592d02955822a7407b70969fb7a82bc17d59) Properly defer resolution of mapped types with generic `as` clauses ([#&#8203;51050](https://github.com/Microsoft/TypeScript/issues/51050))
-   [`42b1049`](https://github.com/Microsoft/TypeScript/commit/42b1049aee8c655631cb4f0065de86ec1023d20a) Update package-lock.json
-   [`5f3e6cc`](https://github.com/Microsoft/TypeScript/commit/5f3e6cc4980d26af5d8a8f463e59b2c3338165c6) Plugin probe location is higher priority than peer node_modules ([#&#8203;51079](https://github.com/Microsoft/TypeScript/issues/51079)) \[ [#&#8203;34616](https://github.com/Microsoft/TypeScript/issues/34616) ]
-   [`2648f6a`](https://github.com/Microsoft/TypeScript/commit/2648f6ab09e3176c7da2c07c54066d3a3433a298) Plugins in project were adding up after every config file reload ([#&#8203;51087](https://github.com/Microsoft/TypeScript/issues/51087))
-   [`c18791c`](https://github.com/Microsoft/TypeScript/commit/c18791ccf165672df3b55f5bdd4a8655f33be26c) Fix incorrect options type to WatchOptions ([#&#8203;51064](https://github.com/Microsoft/TypeScript/issues/51064))
-   [`b0795e9`](https://github.com/Microsoft/TypeScript/commit/b0795e9c94757a8ee78077d160cde8819a9801ea) Update package-lock.json
-   [`43c6fd4`](https://github.com/Microsoft/TypeScript/commit/43c6fd4c09464204bc6a6e1c6c1d32fa12270414) Covert some of the config testing to baselines for easy validation ([#&#8203;51063](https://github.com/Microsoft/TypeScript/issues/51063))
-   [`fc5e72b`](https://github.com/Microsoft/TypeScript/commit/fc5e72b92cb8ea13c5e0f2cfc35d8b2cbfd1fe36) Remove unused defaultWatchFileKind method since useFsEvents is default for tsserver and tsc ([#&#8203;51044](https://github.com/Microsoft/TypeScript/issues/51044))
-   [`8af9a93`](https://github.com/Microsoft/TypeScript/commit/8af9a936b5240398370887c22cacaff65fee707b) Use typescript.d.ts in APISample tests ([#&#8203;51061](https://github.com/Microsoft/TypeScript/issues/51061))
-   [`4953316`](https://github.com/Microsoft/TypeScript/commit/49533168dbb4e19f243b9dbdfd6a3aac69f5b3dd) Remove configureLanguageServiceBuild, instrumenter ([#&#8203;51048](https://github.com/Microsoft/TypeScript/issues/51048))
-   [`9dfffd0`](https://github.com/Microsoft/TypeScript/commit/9dfffd0fbb406d7f2e5e2ca85768624ca388a7bf) Update GitHub Actions ([#&#8203;51045](https://github.com/Microsoft/TypeScript/issues/51045))
-   [`4635a5c`](https://github.com/Microsoft/TypeScript/commit/4635a5cef9aefa9aa847ef7ce2e6767ddf4f54c2) Update package-lock.json
-   [`33a34e5`](https://github.com/Microsoft/TypeScript/commit/33a34e5b96bfe086266f4765ab9789a2a02507f9) Adding a JSDoc comment to the es5 type declarations to describe the functionality of Date.now() ([#&#8203;50630](https://github.com/Microsoft/TypeScript/issues/50630))
-   [`299745c`](https://github.com/Microsoft/TypeScript/commit/299745cb217c2fc061f75b3735f8420d78b8360a) Fix crash in goto-def on `@override` ([#&#8203;51016](https://github.com/Microsoft/TypeScript/issues/51016))
-   [`7dcf11f`](https://github.com/Microsoft/TypeScript/commit/7dcf11f13985be927886ebea353d282a9b3418e0) fix(50750): Object type literal with string literal property in contextual typing position causes language service error on all literal type references ([#&#8203;50757](https://github.com/Microsoft/TypeScript/issues/50757))
-   [`5cd49f6`](https://github.com/Microsoft/TypeScript/commit/5cd49f6cbcd2effe9d425dee3a39cb49209bb656) Update package-lock.json
-   [`8a1b858`](https://github.com/Microsoft/TypeScript/commit/8a1b85880f89c9cff606c5844e8883e5f483c7db) Update package-lock.json
-   [`96894db`](https://github.com/Microsoft/TypeScript/commit/96894db6cb5b7af6857b4d0c7f70f7d8ac782d51) Include type parameter defaults in contextual typing ([#&#8203;50994](https://github.com/Microsoft/TypeScript/issues/50994)) \[ [#&#8203;51002](https://github.com/Microsoft/TypeScript/issues/51002) ]
-   [`0d0a793`](https://github.com/Microsoft/TypeScript/commit/0d0a79371471d627ae298a145f8009b05cbccb72) Allow Unicode extended escapes in ES5 and earlier ([#&#8203;50918](https://github.com/Microsoft/TypeScript/issues/50918))
-   [`58bae8d`](https://github.com/Microsoft/TypeScript/commit/58bae8db69b275a3efa57b14b486778c55185552) Update package-lock.json
-   [`0ce72ef`](https://github.com/Microsoft/TypeScript/commit/0ce72ef6c8b39cd2d07e5b0eb3a0c144a7783ad2) Add option to OrganizeImports for removal only ([#&#8203;50931](https://github.com/Microsoft/TypeScript/issues/50931))
-   [`42f9143`](https://github.com/Microsoft/TypeScript/commit/42f9143e114c5c07f40df83ed07ffeb3cbaf2101) feat: codefix for `for await of` ([#&#8203;50623](https://github.com/Microsoft/TypeScript/issues/50623))
-   [`ecf50e8`](https://github.com/Microsoft/TypeScript/commit/ecf50e81a7a9cccd9bf5ea7598764082981faab0) Properly compute `SymbolFlags.Optional` for intersected properties ([#&#8203;50958](https://github.com/Microsoft/TypeScript/issues/50958))
-   [`d1586de`](https://github.com/Microsoft/TypeScript/commit/d1586de0434567b998876929eb8229235b85b350) Fully resolve aliases when checking symbol flags ([#&#8203;50853](https://github.com/Microsoft/TypeScript/issues/50853))
-   [`45148dd`](https://github.com/Microsoft/TypeScript/commit/45148dd715a7c3776840778b4df41e7e0bd0bf12) Update LKG to 4.8.4 ([#&#8203;50987](https://github.com/Microsoft/TypeScript/issues/50987))
-   [`9a83f25`](https://github.com/Microsoft/TypeScript/commit/9a83f2551ded0d88a0ba0ec9af260f83eb3568cd) Update package-lock.json
-   [`865848f`](https://github.com/Microsoft/TypeScript/commit/865848fcfb9e6ce7dd64be563fc09f83d4bc9df5) Fix `<=` and `>` comparisons when compared against prerelease versions ([#&#8203;50915](https://github.com/Microsoft/TypeScript/issues/50915))
-   [`fbfe934`](https://github.com/Microsoft/TypeScript/commit/fbfe9340a90777dee03b30f736fab44056123be0) Fix comparability between type parameters related by a union constraint ([#&#8203;50978](https://github.com/Microsoft/TypeScript/issues/50978))
-   [`b09e93d`](https://github.com/Microsoft/TypeScript/commit/b09e93d3f6d3e999df001b53984954974c25b81f) Merge pull request [#&#8203;50041](https://github.com/Microsoft/TypeScript/issues/50041) from microsoft/fix/47969
-   [`0ac12bb`](https://github.com/Microsoft/TypeScript/commit/0ac12bbe7a410238ca992a42f41816a97f6906f4) Update package-lock.json
-   [`8192d55`](https://github.com/Microsoft/TypeScript/commit/8192d550496d884263e292488e325ae96893dc78) Pick correct compilerOptions when checking if we can share emitSignatures ([#&#8203;50910](https://github.com/Microsoft/TypeScript/issues/50910)) \[ [#&#8203;50902](https://github.com/Microsoft/TypeScript/issues/50902) ]
-   [`16faef1`](https://github.com/Microsoft/TypeScript/commit/16faef1d8d522b66b6c672bdd15b4026e2018a62) During uptodate ness check with buildInfo, check if there are errors explicitly with noEmit ([#&#8203;50974](https://github.com/Microsoft/TypeScript/issues/50974)) \[ [#&#8203;50959](https://github.com/Microsoft/TypeScript/issues/50959) ]
-   [`63791f5`](https://github.com/Microsoft/TypeScript/commit/63791f52d4e7a3bf461b974e94abd8cbb6b546c5) Update package-lock.json
-   [`09368bc`](https://github.com/Microsoft/TypeScript/commit/09368bcbaebd157d1e66859ab6f5b30c2fd6eaff) Handle if project for open file will get recollected because of pending cleanup from closed script info ([#&#8203;50908](https://github.com/Microsoft/TypeScript/issues/50908)) \[ [#&#8203;50868](https://github.com/Microsoft/TypeScript/issues/50868) ]
-   [`c81bf4d`](https://github.com/Microsoft/TypeScript/commit/c81bf4d8b0c12410a082d6598fcc24cc721b6e9e) fix(49594): Typescript 4.7.3 bracketed class property compilation error strictPropertyInitialization:true ([#&#8203;49619](https://github.com/Microsoft/TypeScript/issues/49619))
-   [`bc9cbbe`](https://github.com/Microsoft/TypeScript/commit/bc9cbbef421ae907f7dfd5a84ca69c4f68a8935b) Merge pull request [#&#8203;49912](https://github.com/Microsoft/TypeScript/issues/49912) from microsoft/fix/47508
-   [`5a10f46`](https://github.com/Microsoft/TypeScript/commit/5a10f46c0028790120cb85c826efa4248707a964) Update package-lock.json
-   [`8e71f42`](https://github.com/Microsoft/TypeScript/commit/8e71f429c811ac7811533d7b0e02c32bad5a1b47) Fixing pr comments
-   [`c100c64`](https://github.com/Microsoft/TypeScript/commit/c100c6488db0482dcc1455290f456dece91cac0a) Update package-lock.json
-   [`2a91107`](https://github.com/Microsoft/TypeScript/commit/2a91107f7548eeb5e32673e76277d27264ea88e2) Update package-lock.json
-   [`4ab9e76`](https://github.com/Microsoft/TypeScript/commit/4ab9e76fb748b08712f9d0017dd8f0ba74d1859f) Use paths in package.json 'files' array that work with npm 6 and later. ([#&#8203;50930](https://github.com/Microsoft/TypeScript/issues/50930))
-   [`549b542`](https://github.com/Microsoft/TypeScript/commit/549b5429d4837344e8c99657109bb6538fd2dbb5) Use paths in package.json 'files' array that work with npm 6 and later.
-   [`7f37d25`](https://github.com/Microsoft/TypeScript/commit/7f37d251fc69da34659e4c60792177e1e9a8e7a6) Update version to 4.9.1-beta and LKG.
-   [`f16ca7d`](https://github.com/Microsoft/TypeScript/commit/f16ca7dd364e57ee7ce337f987b20dbc1e34941f) Remove 'async' dependency, used only in errorCheck.ts, modernize file ([#&#8203;50667](https://github.com/Microsoft/TypeScript/issues/50667))
-   [`c6bef3f`](https://github.com/Microsoft/TypeScript/commit/c6bef3f02874bddf6df120aa4f0d130c58478468) LEGO: Merge pull request 50921
-   [`6753027`](https://github.com/Microsoft/TypeScript/commit/675302730b8ca525d47c910bf2d3174bd3b66a1b) Update package-lock.json
-   [`9740bcc`](https://github.com/Microsoft/TypeScript/commit/9740bcc53418e8792a4dbb978059ff5a02b55c91) Pluralized `hasInvalidatedResolution` -> `hasInvalidatedResolutions` ([#&#8203;50912](https://github.com/Microsoft/TypeScript/issues/50912))
-   [`84c29cd`](https://github.com/Microsoft/TypeScript/commit/84c29cd576fd1facb9b3a353d5342df04acdb184) 🤖 Pick PR [#&#8203;50912](https://github.com/Microsoft/TypeScript/issues/50912) (Pluralized \`hasInvalidatedResolutio...) into release-4.9 ([#&#8203;50913](https://github.com/Microsoft/TypeScript/issues/50913))
-   [`a26f634`](https://github.com/Microsoft/TypeScript/commit/a26f63424de249bb106804dfc9a024bb525de93e) Merge remote-tracking branch 'origin/main' into release-4.9
-   [`a455955`](https://github.com/Microsoft/TypeScript/commit/a455955aac85ecc5b2182fe50b83670188955feb) Make hasInvalidatedResolution non internal for program and add it watchApi ([#&#8203;50776](https://github.com/Microsoft/TypeScript/issues/50776)) \[ [#&#8203;48057](https://github.com/Microsoft/TypeScript/issues/48057) ]
-   [`645d1cd`](https://github.com/Microsoft/TypeScript/commit/645d1cd7c1ee1d65a87b2183b173611467256a09) Fix assert in addIndirectUser in FAR ([#&#8203;50905](https://github.com/Microsoft/TypeScript/issues/50905))
-   [`bbec17d`](https://github.com/Microsoft/TypeScript/commit/bbec17d9003246fa00d6bf676bb4ce7c54ff2be4) LEGO: Merge pull request 50900
-   [`a9ecc67`](https://github.com/Microsoft/TypeScript/commit/a9ecc675d636c3bbca697bc4881b019e8645a7a6) Update package-lock.json
-   [`221cf55`](https://github.com/Microsoft/TypeScript/commit/221cf55a21e448bd3fe2cf26a754c9c0dda3dca3) package.json `exports` should have priority over `typesVersions` ([#&#8203;50890](https://github.com/Microsoft/TypeScript/issues/50890))
-   [`acb8977`](https://github.com/Microsoft/TypeScript/commit/acb89771901f8c81c6046fa7c16361a83388ddab) Remove .github/tsc.json ([#&#8203;50664](https://github.com/Microsoft/TypeScript/issues/50664))
-   [`7a3de81`](https://github.com/Microsoft/TypeScript/commit/7a3de819bfb93fb27ef7ea8305d2df069866c380) fix(49993): skip the quick fix for an expression with an enum type ([#&#8203;50625](https://github.com/Microsoft/TypeScript/issues/50625))
-   [`2644f28`](https://github.com/Microsoft/TypeScript/commit/2644f2867734d77a3a3939c55d5cc0a5004df0ed) fix(49200): skip duplicated method declarations ([#&#8203;50609](https://github.com/Microsoft/TypeScript/issues/50609))
-   [`98652a3`](https://github.com/Microsoft/TypeScript/commit/98652a349a67be718e8e8b5fcf590972eb62a104) Bump version to 4.9.0-beta and LKG.
-   [`4d91204`](https://github.com/Microsoft/TypeScript/commit/4d91204c9d9f27756785f62fade44d93824d47f4) fix(37030): Expand Selection in function and arrow function skips body block ([#&#8203;50711](https://github.com/Microsoft/TypeScript/issues/50711))
-   [`e2dd508`](https://github.com/Microsoft/TypeScript/commit/e2dd5084f75ac37a78102d212b67d36595596137) DOM update 2022/09/21 ([#&#8203;50884](https://github.com/Microsoft/TypeScript/issues/50884))
-   [`1d9ab83`](https://github.com/Microsoft/TypeScript/commit/1d9ab83914a551936ce5ef80340ee65cfd1422ba) fix(50866): emit modifiers from export declarations ([#&#8203;50874](https://github.com/Microsoft/TypeScript/issues/50874))
-   [`92a1b12`](https://github.com/Microsoft/TypeScript/commit/92a1b124c178e1ff4871b29cb9abc00307e21742) LEGO: Merge pull request 50877
-   [`e383db6`](https://github.com/Microsoft/TypeScript/commit/e383db692eb44561333c1bbe353788b337aebc99) Fix debug.ts \__debugKind check ([#&#8203;50871](https://github.com/Microsoft/TypeScript/issues/50871))
-   [`01054e0`](https://github.com/Microsoft/TypeScript/commit/01054e05ab7638e96515619c4ce62200fdf4e0fd) Consistently add undefined/missing to optional tuple element types ([#&#8203;50831](https://github.com/Microsoft/TypeScript/issues/50831))
-   [`d90795e`](https://github.com/Microsoft/TypeScript/commit/d90795e799ca8e41aabd6d0852abb585138200ef) Improve escape sequence handling in private names ([#&#8203;50856](https://github.com/Microsoft/TypeScript/issues/50856))
-   [`938a69a`](https://github.com/Microsoft/TypeScript/commit/938a69a526166ca4e7880fa140fba432936f0fe3) Fix import statement completions followed by interface declaration ([#&#8203;50350](https://github.com/Microsoft/TypeScript/issues/50350))
-   [`e002159`](https://github.com/Microsoft/TypeScript/commit/e002159ad133a024bae48a2e190e54ad93f6b52d) feat(49962): Disallow comparison against NaN  ([#&#8203;50626](https://github.com/Microsoft/TypeScript/issues/50626))
-   [`80ae43d`](https://github.com/Microsoft/TypeScript/commit/80ae43d2399503a04651e3705823137d36148b00) Fixing spaces
-   [`abc58bd`](https://github.com/Microsoft/TypeScript/commit/abc58bdabcf536bd5204fbc84fb7f45d75f1a9ad) Fixing baseline errors
-   [`305f4bd`](https://github.com/Microsoft/TypeScript/commit/305f4bd420bf9edc0239fd3a740aa83fbdeb9ba2) Merge branch 'main' into fix/47969
-   [`23746af`](https://github.com/Microsoft/TypeScript/commit/23746af766b53fcc3afecfa16478809a5a36628a) fix(50591): RangeError: Maximum call stack size exceeded ([#&#8203;50594](https://github.com/Microsoft/TypeScript/issues/50594))
-   [`168186f`](https://github.com/Microsoft/TypeScript/commit/168186f93d23ae59dbea3fea2adba453527343fd) Allow a union property of a private/protected member and an intersection property including that same member ([#&#8203;50328](https://github.com/Microsoft/TypeScript/issues/50328))
-   [`812ebcf`](https://github.com/Microsoft/TypeScript/commit/812ebcf6e3aebfa72b976a6ae4d65929759a2867) Update package-lock.json
-   [`16156b1`](https://github.com/Microsoft/TypeScript/commit/16156b1baf26a39ce428423f7106f3ef2b4e98bb) Add rules from eslint's recommended set that triggered good lints ([#&#8203;50422](https://github.com/Microsoft/TypeScript/issues/50422))
-   [`a11c416`](https://github.com/Microsoft/TypeScript/commit/a11c41621bbbab100a391dd348651c6661549663) Improve checking of `in` operator ([#&#8203;50666](https://github.com/Microsoft/TypeScript/issues/50666))
-   [`67f2b62`](https://github.com/Microsoft/TypeScript/commit/67f2b62ed2bd1de0299781ba659fa638346bcecf) Gabritto/jsemitfixsilly ([#&#8203;50849](https://github.com/Microsoft/TypeScript/issues/50849))
-   [`3014dec`](https://github.com/Microsoft/TypeScript/commit/3014dec8878a9ff8d86186a6ac3fd9fad4f3b739) Don't elide imports when transforming JS files ([#&#8203;50404](https://github.com/Microsoft/TypeScript/issues/50404))
-   [`57c7aa7`](https://github.com/Microsoft/TypeScript/commit/57c7aa755ca3028ff13eb6a37d91775a6fac71e3) LEGO: Merge pull request 50842
-   [`48a8e89`](https://github.com/Microsoft/TypeScript/commit/48a8e8953a1e609970dc85e08f99ac499bfe8356) Improve check of whether type query node possibly contains reference to type parameter ([#&#8203;50070](https://github.com/Microsoft/TypeScript/issues/50070))
-   [`af9ced1`](https://github.com/Microsoft/TypeScript/commit/af9ced11f50c8ac15079d2f88f8961f1e5b62f7f) LEGO: Merge pull request 50825
-   [`a8e13f7`](https://github.com/Microsoft/TypeScript/commit/a8e13f7340c5229426072d443fa511bba82a0054) Fixed an issue with destructured bindings from a generic union constraint not being narrowed correctly ([#&#8203;50221](https://github.com/Microsoft/TypeScript/issues/50221))
-   [`08af0b6`](https://github.com/Microsoft/TypeScript/commit/08af0b6bf0041fef52ca8c1b69d6d4a3db439196) Update package-lock.json
-   [`0df46e8`](https://github.com/Microsoft/TypeScript/commit/0df46e873322b8eeb271a442eaf034d91ae68770) Fix test around RegExp match vs. exec results ([#&#8203;50813](https://github.com/Microsoft/TypeScript/issues/50813))
-   [`906510e`](https://github.com/Microsoft/TypeScript/commit/906510e0f30590a4c8fdc892905ccb8dbe512e3d) Fixes for pr
-   [`2970c5d`](https://github.com/Microsoft/TypeScript/commit/2970c5d1671b2376711cd55594c4597d6da7d8c3) make `RegExpExecArray` always include index 0 ([#&#8203;50713](https://github.com/Microsoft/TypeScript/issues/50713))
-   [`0507192`](https://github.com/Microsoft/TypeScript/commit/05071920a03f8ea530fe01f79f2537c999ec8b02) Accepting baselines
-   [`29e50b3`](https://github.com/Microsoft/TypeScript/commit/29e50b314900d22b08f6472918f59ae2b40aba08) Rewording documentation
-   [`01cae69`](https://github.com/Microsoft/TypeScript/commit/01cae69e3403a831bc5c752b95c8b7547dd95821) fix(50796): omit questionToken in object literal method completions ([#&#8203;50802](https://github.com/Microsoft/TypeScript/issues/50802))
-   [`3b84f76`](https://github.com/Microsoft/TypeScript/commit/3b84f76fb23bd39d14c7243e5cd495fd207916c0) Fix crash caused by incorrect bounds check (regression in 4.8) ([#&#8203;50797](https://github.com/Microsoft/TypeScript/issues/50797))
-   [`7e51306`](https://github.com/Microsoft/TypeScript/commit/7e51306d30b72ce474054c3f3047f57d90dca41a) Update package-lock.json
-   [`8b35c13`](https://github.com/Microsoft/TypeScript/commit/8b35c1300e14ebc026b4f1621db8f6f1bba30833) The error "Object is possibly null or undefined" is ambiguous. ([#&#8203;49797](https://github.com/Microsoft/TypeScript/issues/49797))
-   [`a3f51b3`](https://github.com/Microsoft/TypeScript/commit/a3f51b3b8278b7dc5f59d83f35458338f57c81c7) Update user baselines +cc [@&#8203;sandersn](https://github.com/sandersn) ([#&#8203;43554](https://github.com/Microsoft/TypeScript/issues/43554))
-   [`ba10a0d`](https://github.com/Microsoft/TypeScript/commit/ba10a0d7c06df259e620645a8d6fd9a5262d8b5d) Removing duplicated code
-   [`ec6ae1c`](https://github.com/Microsoft/TypeScript/commit/ec6ae1c4d0f48f15cd01b1502d0b2e5ac387dcf5) Partially revert [#&#8203;41044](https://github.com/Microsoft/TypeScript/issues/41044), restoring parameter destructurings in d.ts files ([#&#8203;50779](https://github.com/Microsoft/TypeScript/issues/50779))
-   [`28232ca`](https://github.com/Microsoft/TypeScript/commit/28232ca4b8833957cdf8d592f085fb80d97ef604) LEGO: Merge pull request 50783
-   [`49cfa1d`](https://github.com/Microsoft/TypeScript/commit/49cfa1db17b593191601736a11cbf165d42510a0) Update package-lock.json
-   [`4110b80`](https://github.com/Microsoft/TypeScript/commit/4110b80fbb24f2ac6dd284ef3511ca69ac6db517) Fix equality narrowing and comparable relation for intersections with {} ([#&#8203;50735](https://github.com/Microsoft/TypeScript/issues/50735))
-   [`b23f1d6`](https://github.com/Microsoft/TypeScript/commit/b23f1d6b59beabde1072d14b7fb65781ce209c15) LEGO: Merge pull request 50771
-   [`618fb2d`](https://github.com/Microsoft/TypeScript/commit/618fb2d8b92357d564ddb8596296ecaba5468002) Update package-lock.json
-   [`08b91f6`](https://github.com/Microsoft/TypeScript/commit/08b91f6b827e9ee98407c0eb969579ab77fa9f0c) fix(50717): tsc crashes when it sees a JSDoc tag inside an [@&#8203;override](https://github.com/override) annotation ([#&#8203;50724](https://github.com/Microsoft/TypeScript/issues/50724))
-   [`60963d7`](https://github.com/Microsoft/TypeScript/commit/60963d7216266bca6ef3236f43913de703fe5c7a) Discriminant of type `never` should never be matched ([#&#8203;50755](https://github.com/Microsoft/TypeScript/issues/50755))
-   [`e37ea53`](https://github.com/Microsoft/TypeScript/commit/e37ea53715a725dd13699dc1be5190c6ebd0d8f8) Update package-lock.json
-   [`a88c366`](https://github.com/Microsoft/TypeScript/commit/a88c36655b575d3039f187e64016b971efc0f173) Fix test baselining for tsserver host timeouts ([#&#8203;50748](https://github.com/Microsoft/TypeScript/issues/50748))
-   [`6d38487`](https://github.com/Microsoft/TypeScript/commit/6d384876e5adeffd6e04cf4e6dd7ea5fc0dd0584) Fix workflow typo ([#&#8203;50746](https://github.com/Microsoft/TypeScript/issues/50746))
-   [`6b890f9`](https://github.com/Microsoft/TypeScript/commit/6b890f93c491d3496dfd7909592c1df8a771fcd0) Handle more places where package direcroy is converted to canonical file path ([#&#8203;50740](https://github.com/Microsoft/TypeScript/issues/50740))
-   [`f5f2923`](https://github.com/Microsoft/TypeScript/commit/f5f2923c7d0f0963a78b9c5f233b635d4e78ae91) Revert removal of nonInferrableAnyType ([#&#8203;50691](https://github.com/Microsoft/TypeScript/issues/50691))
-   [`7120b52`](https://github.com/Microsoft/TypeScript/commit/7120b520cfe7b92d2b4bbfd679f1f5bd0c559c2c) Update twoslash workflow ([#&#8203;50738](https://github.com/Microsoft/TypeScript/issues/50738))
-   [`68d526c`](https://github.com/Microsoft/TypeScript/commit/68d526c200a0a5c51024586890b2473c9819c6ea) Don't run linter after tests runs ([#&#8203;50597](https://github.com/Microsoft/TypeScript/issues/50597))
-   [`8e5e2e0`](https://github.com/Microsoft/TypeScript/commit/8e5e2e08ead119910d6eb177eab9beb84e3ab311) Fix backticks in our JSDoc comments ([#&#8203;50737](https://github.com/Microsoft/TypeScript/issues/50737))
-   [`a4cabe7`](https://github.com/Microsoft/TypeScript/commit/a4cabe725b413f154f738b48c1fe2f053cff7d26) Support for auto-accessor fields from the Stage 3 Decorators proposal ([#&#8203;49705](https://github.com/Microsoft/TypeScript/issues/49705))
-   [`7737473`](https://github.com/Microsoft/TypeScript/commit/77374732df82c9d5c1319677dc595868bbc648b5) Update package-lock.json
-   [`12ab0fe`](https://github.com/Microsoft/TypeScript/commit/12ab0fea9f45c48ea644c8273bedde235c8bcc61) Update package-lock.json
-   [`eb40134`](https://github.com/Microsoft/TypeScript/commit/eb40134373cc524bd15432e15490d4e369754c50) Don't leave space for property access on non-integer literals ([#&#8203;50703](https://github.com/Microsoft/TypeScript/issues/50703))
-   [`a70bb9d`](https://github.com/Microsoft/TypeScript/commit/a70bb9d3ff102e044e83d2db43e585105e9a1761) Preserve special intersections in mapped types ([#&#8203;50704](https://github.com/Microsoft/TypeScript/issues/50704))
-   [`1a1c271`](https://github.com/Microsoft/TypeScript/commit/1a1c27167536e005a4d241ef84c43c0c0ca0aaf9) Don't remove space before dot if in property access on numeric literal ([#&#8203;50695](https://github.com/Microsoft/TypeScript/issues/50695))
-   [`7c918fb`](https://github.com/Microsoft/TypeScript/commit/7c918fb76682e79e8fd460cf1c2da9f2f22c91a3) Baseline host state when baselining tsserver tests ([#&#8203;50678](https://github.com/Microsoft/TypeScript/issues/50678))
-   [`2f1ba45`](https://github.com/Microsoft/TypeScript/commit/2f1ba45cbaca5e95959f9fd43c42edd64bc5638c) Update LKG and devDep of typescript to v4.8.3 ([#&#8203;50689](https://github.com/Microsoft/TypeScript/issues/50689))
-   [`be4e9ba`](https://github.com/Microsoft/TypeScript/commit/be4e9bac8ff66174d4e856dae06f69aa4ef7e479) Update package-lock.json
-   [`f46a680`](https://github.com/Microsoft/TypeScript/commit/f46a680863d7ecf7b7aa46b5e056acfe702b78bb) Remove error message in node16 ([#&#8203;50673](https://github.com/Microsoft/TypeScript/issues/50673))
-   [`ab831d0`](https://github.com/Microsoft/TypeScript/commit/ab831d018030304b886590fc4253f9dab593ddb0) Ignore `--help` and `-?` in `tsc init` generated `compilerOptions` ([#&#8203;50628](https://github.com/Microsoft/TypeScript/issues/50628))
-   [`bb6f36f`](https://github.com/Microsoft/TypeScript/commit/bb6f36f7c80c290b98759823445dae73ebfd3eb2) Forward intersection state flag to conditional type target check ([#&#8203;50620](https://github.com/Microsoft/TypeScript/issues/50620))
-   [`b58721f`](https://github.com/Microsoft/TypeScript/commit/b58721fe15a9d58aa9c2b53b6e6fdb7966f56d2c) Update package-lock.json
-   [`3c3820b`](https://github.com/Microsoft/TypeScript/commit/3c3820b1a4033de90a6f9369b3e714ba58231e99) Simplify CI detection ([#&#8203;50661](https://github.com/Microsoft/TypeScript/issues/50661))
-   [`9ac1fce`](https://github.com/Microsoft/TypeScript/commit/9ac1fce1175964f71117f6574d96eda127282bf4) Fix eslint not looking at certain scripts, fix lints ([#&#8203;50660](https://github.com/Microsoft/TypeScript/issues/50660))
-   [`fd05c0c`](https://github.com/Microsoft/TypeScript/commit/fd05c0cc6da676c5b9183ad2a7ced7ce363b855a) Make useFsEvents as default strategy for the watching ([#&#8203;50366](https://github.com/Microsoft/TypeScript/issues/50366))
-   [`5c2f770`](https://github.com/Microsoft/TypeScript/commit/5c2f770d9714276567e6ef9ec805368756539725) Remove unused cancellation from build ([#&#8203;50658](https://github.com/Microsoft/TypeScript/issues/50658))
-   [`66fbf05`](https://github.com/Microsoft/TypeScript/commit/66fbf058ece7882f2a964aeeda81bc352e4a6329) Update package-lock.json
-   [`7910c50`](https://github.com/Microsoft/TypeScript/commit/7910c509c4545517489d6264571bb6c05248fb4a) Update package-lock.json
-   [`fd3a84c`](https://github.com/Microsoft/TypeScript/commit/fd3a84c3f0c80cb201c47399a055625f919a9b91) Report every instance of TS1208 ([#&#8203;50101](https://github.com/Microsoft/TypeScript/issues/50101))
-   [`62f980a`](https://github.com/Microsoft/TypeScript/commit/62f980aff82ac8b5939bc9b65cf6e55d122b42d9) Check if its same buildinfo only for directly referenced projects and not recursively ([#&#8203;50617](https://github.com/Microsoft/TypeScript/issues/50617)) \[ [#&#8203;50545](https://github.com/Microsoft/TypeScript/issues/50545) ]
-   [`856c7c5`](https://github.com/Microsoft/TypeScript/commit/856c7c5fdd25833dbb0e1e67071200cd706eae4f) Allow `{}` to narrow in same special cases as `unknown` ([#&#8203;50601](https://github.com/Microsoft/TypeScript/issues/50601))
-   [`854d448`](https://github.com/Microsoft/TypeScript/commit/854d448e5ccf542a05d0b5dcb97e1b925905e258) `in` operator shouldn't narrow `{}` originating in `unknown` ([#&#8203;50610](https://github.com/Microsoft/TypeScript/issues/50610))
-   [`549e61d`](https://github.com/Microsoft/TypeScript/commit/549e61d0af1ba885be29d69f341e7d3a00686071) Update package-lock.json
-   [`bcf9949`](https://github.com/Microsoft/TypeScript/commit/bcf994996ea0ddd8ca7daadd6b5fbc712eb5ce6b) fix(50079): show deprecated on JSX attributes ([#&#8203;50084](https://github.com/Microsoft/TypeScript/issues/50084))
-   [`5df09a5`](https://github.com/Microsoft/TypeScript/commit/5df09a514c99010d3126d8a9f11aa00ecbd0bd21) Use bidirectional comparability in narrowing ([#&#8203;50592](https://github.com/Microsoft/TypeScript/issues/50592))
-   [`891cdc5`](https://github.com/Microsoft/TypeScript/commit/891cdc58aa4005d7197e76ec0a48afcbc3b44ac3) Remove unused baselines ([#&#8203;50593](https://github.com/Microsoft/TypeScript/issues/50593))
-   [`6db2c88`](https://github.com/Microsoft/TypeScript/commit/6db2c882f389c95c526df0e890354205b5696a7d) {} & null and {} & undefined should always be never  ([#&#8203;50553](https://github.com/Microsoft/TypeScript/issues/50553))
-   [`238c341`](https://github.com/Microsoft/TypeScript/commit/238c341701439a95d5eb71a4cf421c0574d0ee47) Defer distributing index over generic object types ([#&#8203;50540](https://github.com/Microsoft/TypeScript/issues/50540))
-   [`2983092`](https://github.com/Microsoft/TypeScript/commit/298309271bc526b9753c10c1c916bfe9d5c89a8b) Do not canonicalize the file names when getting absolute paths during nodenext resolution ([#&#8203;50557](https://github.com/Microsoft/TypeScript/issues/50557)) \[ [#&#8203;50544](https://github.com/Microsoft/TypeScript/issues/50544) ]
-   [`dcade77`](https://github.com/Microsoft/TypeScript/commit/dcade7732c142abba88eecae78c115fa37b95e01) Update package-lock.json
-   [`a9797d2`](https://github.com/Microsoft/TypeScript/commit/a9797d218d34fefc61b823d0e1dd24f6eb5363c8) fix(50340): typeof ... === "undefined" check on discriminated union of undefined and object type doesn't narrow correctly ([#&#8203;50344](https://github.com/Microsoft/TypeScript/issues/50344))
-   [`43f8ae6`](https://github.com/Microsoft/TypeScript/commit/43f8ae6df4ffefb7e4795808b94bcfbf74628682) Only normalize intersections that include {} ([#&#8203;50535](https://github.com/Microsoft/TypeScript/issues/50535))
-   [`d293e72`](https://github.com/Microsoft/TypeScript/commit/d293e723a20cdba258238397097e9a4e409bc41f) Rename API to importPlugin ([#&#8203;50554](https://github.com/Microsoft/TypeScript/issues/50554))
-   [`cd312d3`](https://github.com/Microsoft/TypeScript/commit/cd312d3076c054cdf9ed6f33c2d3e3995bca92eb) Managing control flow
-   [`19defbf`](https://github.com/Microsoft/TypeScript/commit/19defbfe576f3f2da32b5372274e4664b66ec00d) Update package-lock.json
-   [`f071d30`](https://github.com/Microsoft/TypeScript/commit/f071d303c182c2a776da1471a3ec9ef05297a9d8) Move contributing related info out of README to CONTRIBUTING ([#&#8203;50543](https://github.com/Microsoft/TypeScript/issues/50543))
-   [`488d0ee`](https://github.com/Microsoft/TypeScript/commit/488d0eebd0556fcc6e5f4cfc69c2ef7e5c2708ed) Retain name and propertyName in declaration emit copies of binding patterns if property name is a keyword ([#&#8203;50537](https://github.com/Microsoft/TypeScript/issues/50537))
-   [`8b482b5`](https://github.com/Microsoft/TypeScript/commit/8b482b513d87c6fcda8ece18b99f8a01cff5c605) Update package-lock.json
-   [`c89f355`](https://github.com/Microsoft/TypeScript/commit/c89f355a41b18c96eccb67dade04fce8c330068b) Remove redundant pretest script ([#&#8203;50518](https://github.com/Microsoft/TypeScript/issues/50518))
-   [`6d170b4`](https://github.com/Microsoft/TypeScript/commit/6d170b490d5ff5f881f6cbf8cd749e0103ee5d1f) Handle intersections in isGenericTypeWithoutNullableConstraint ([#&#8203;50497](https://github.com/Microsoft/TypeScript/issues/50497))
-   [`ed6889c`](https://github.com/Microsoft/TypeScript/commit/ed6889cd5b61b9fa5156018362d867def18e281d) LEGO: Merge pull request 50506
-   [`29cbfe9`](https://github.com/Microsoft/TypeScript/commit/29cbfe9a2504cfae30bae938bdb2be6081ccc5c8) LEGO: Merge pull request 50493
-   [`6faa291`](https://github.com/Microsoft/TypeScript/commit/6faa291b453987192d996517b4376b14980b25c4) LEGO: Merge pull request 50484
-   [`71b2ba6`](https://github.com/Microsoft/TypeScript/commit/71b2ba6111e934f2b4ee112bc4d8d2f47ced22f5) Reuse computed type of condition expressions ([#&#8203;49881](https://github.com/Microsoft/TypeScript/issues/49881))
-   [`8778c1d`](https://github.com/Microsoft/TypeScript/commit/8778c1ded3a1955dce1063d72caf4523bec37c90) Update package-lock.json
-   [`4579245`](https://github.com/Microsoft/TypeScript/commit/4579245f36d9c3deccb097da9d5545f9c5c1ab26) fix(50427): allow convert function expressions ([#&#8203;50430](https://github.com/Microsoft/TypeScript/issues/50430))
-   [`cbc0b17`](https://github.com/Microsoft/TypeScript/commit/cbc0b17eac1fcb011a66f0544c813968cdf065c4) Push package-lock.json updates via typescript-bot token ([#&#8203;50476](https://github.com/Microsoft/TypeScript/issues/50476))
-   [`bb3a7ae`](https://github.com/Microsoft/TypeScript/commit/bb3a7aec11a20afb30c5098a75e001d1a4eb08f9) fix(50415): Language server debug failure - Did not expect GetAccessor to have an Identifier in its trivia ([#&#8203;50470](https://github.com/Microsoft/TypeScript/issues/50470))
-   [`3557092`](https://github.com/Microsoft/TypeScript/commit/3557092b1474bc3405a29da93bd15c108ab2f8b3) Rephrase error message to be 100% technically correct ([#&#8203;50471](https://github.com/Microsoft/TypeScript/issues/50471))
-   [`71d1911`](https://github.com/Microsoft/TypeScript/commit/71d19115031ae1c48fa34a24636dfae5e87e1b08) add unknown to DateTimeFormatTypes ([#&#8203;50402](https://github.com/Microsoft/TypeScript/issues/50402))
-   [`8f89599`](https://github.com/Microsoft/TypeScript/commit/8f895997d2cb79deb937d50fa1bed1c470528025) Don't include .gitattributes in package ([#&#8203;50475](https://github.com/Microsoft/TypeScript/issues/50475))
-   [`6e8337e`](https://github.com/Microsoft/TypeScript/commit/6e8337ef70e4a36a4df76a3362a41cbcac0dcb84) Optimize substitution types ([#&#8203;50397](https://github.com/Microsoft/TypeScript/issues/50397))
-   [`226dd0b`](https://github.com/Microsoft/TypeScript/commit/226dd0b7bf5cb5e5bb4dc34ab0e8e14f408f3e20) Fix typechecking related lints that changed post 4.8, update LKG to 4.8.2 ([#&#8203;50472](https://github.com/Microsoft/TypeScript/issues/50472))
-   [`164dddc`](https://github.com/Microsoft/TypeScript/commit/164dddc48e1eaa83780b8e72bc7afeebe768437b) feat(7481): Operator to ensure an expression is contextually typed by, and satisfies, some type ([#&#8203;46827](https://github.com/Microsoft/TypeScript/issues/46827))
-   [`0715791`](https://github.com/Microsoft/TypeScript/commit/07157914eb26a6e9abdcda7255c4094c9efff4cd) Update package-lock.json
-   [`e675ea8`](https://github.com/Microsoft/TypeScript/commit/e675ea8dd83aaed018a67534323305c36d373b40) Remove AUTHORS.md, .mailmap, authors.ts script ([#&#8203;50410](https://github.com/Microsoft/TypeScript/issues/50410))
-   [`38076df`](https://github.com/Microsoft/TypeScript/commit/38076df3465af555051db06006bbf30323af0e2d) Fix auto import crash due to difference in `paths` handling ([#&#8203;50419](https://github.com/Microsoft/TypeScript/issues/50419))
-   [`12eb519`](https://github.com/Microsoft/TypeScript/commit/12eb519b3f81d0999bbc4ce9a845744f4dfc215e) fix(50435): Duplicate seeming Code Actions for convert const to let ([#&#8203;50442](https://github.com/Microsoft/TypeScript/issues/50442))
-   [`a08b045`](https://github.com/Microsoft/TypeScript/commit/a08b045d2b22c87a6341a0c1d1318271d14acc86) Jsdoc property description ([#&#8203;50269](https://github.com/Microsoft/TypeScript/issues/50269)) \[ [#&#8203;47933](https://github.com/Microsoft/TypeScript/issues/47933) ]
-   [`5ba22e0`](https://github.com/Microsoft/TypeScript/commit/5ba22e05a96538498a78ab206e1b9892f420e7a1) Remove top level loc folder ([#&#8203;50421](https://github.com/Microsoft/TypeScript/issues/50421))
-   [`c4eb37c`](https://github.com/Microsoft/TypeScript/commit/c4eb37c8a0d5915d64e3992a91a34724aab19fe6) Update package-lock.json
-   [`8d7ad8c`](https://github.com/Microsoft/TypeScript/commit/8d7ad8c3aee4130e2b8cc6438e03e12a39cd398a) fix(50375): Errors for missing enum-named properties should attempt to preserve names ([#&#8203;50382](https://github.com/Microsoft/TypeScript/issues/50382))
-   [`fb717df`](https://github.com/Microsoft/TypeScript/commit/fb717df6bf85318c3d1e833a1dde6789d394cdb2) Discard union types before considering weak type checks on unit-like types ([#&#8203;50423](https://github.com/Microsoft/TypeScript/issues/50423))
-   [`b9a5bbc`](https://github.com/Microsoft/TypeScript/commit/b9a5bbc9afe9fa231aba5162c258bf1e2fa1e82e) Syntax operations also need to ensure project is present for the open script infos since update could be pending to make sure open script info has project ([#&#8203;50418](https://github.com/Microsoft/TypeScript/issues/50418)) \[ [#&#8203;50131](https://github.com/Microsoft/TypeScript/issues/50131) ]
-   [`1d4fbbb`](https://github.com/Microsoft/TypeScript/commit/1d4fbbb529d183b1e6988447e6744cfa7750b9f6) Update package-lock.json
-   [`44ce3cf`](https://github.com/Microsoft/TypeScript/commit/44ce3cff70cb79d1a45b48def04413db5303a151) fix(50224): Intellisense for strings within a type's Union doesn't work properly for JSX ([#&#8203;50231](https://github.com/Microsoft/TypeScript/issues/50231))
-   [`6ee5db9`](https://github.com/Microsoft/TypeScript/commit/6ee5db95c2ad4fee74ad02368afa1d2cc693407e) Use package.json files array instead of .npmignore ([#&#8203;50408](https://github.com/Microsoft/TypeScript/issues/50408))

This list of changes was [auto generated](https://typescript.visualstudio.com/cf7ac146-d525-443c-b23c-0d58337efebc/\_release?releaseId=116&\_a=release-summary).</details>

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, 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 has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNC4yNC4xIiwidXBkYXRlZEluVmVyIjoiMzQuOTkuMiJ9-->

Co-authored-by: cabr2-bot <cabr2.help@gmail.com>
Reviewed-on: https://codeberg.org/Calciumdibromid/CaBr2/pulls/1642
Reviewed-by: Epsilon_02 <epsilon_02@noreply.codeberg.org>
Co-authored-by: Calciumdibromid Bot <cabr2_bot@noreply.codeberg.org>
Co-committed-by: Calciumdibromid Bot <cabr2_bot@noreply.codeberg.org>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
For Uncommitted Bug PR for untriaged, rejected, closed or missing bug
Projects
PR Backlog
  
Done
Development

Successfully merging this pull request may close these issues.

TypeScript 4.7.4: Exponential behavior in strict type checking
6 participants