Skip to content

Fix isExhaustiveSwitchStatement to better handle circularities#51095

Merged
ahejlsberg merged 2 commits into
mainfrom
fix47539
Oct 12, 2022
Merged

Fix isExhaustiveSwitchStatement to better handle circularities#51095
ahejlsberg merged 2 commits into
mainfrom
fix47539

Conversation

@ahejlsberg

Copy link
Copy Markdown
Member

Fixes #47539.

@typescript-bot typescript-bot added Author: Team For Milestone Bug PRs that fix a bug with a specific milestone labels Oct 7, 2022
@ahejlsberg ahejlsberg changed the title Fix isExhaustiveSwitchStatement to better handle circularities Fix isExhaustiveSwitchStatement to better handle circularities Oct 7, 2022
@ahejlsberg

Copy link
Copy Markdown
Member Author

@typescript-bot test this
@typescript-bot user test this inline
@typescript-bot run dt
@typescript-bot perf test faster
@typescript-bot test top100

@typescript-bot

typescript-bot commented Oct 7, 2022

Copy link
Copy Markdown
Contributor

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

Update: The results are in!

@typescript-bot

typescript-bot commented Oct 7, 2022

Copy link
Copy Markdown
Contributor

Heya @ahejlsberg, I've started to run the diff-based top-repos suite on this PR at fd29a7c. You can monitor the build here.

Update: The results are in!

@typescript-bot

typescript-bot commented Oct 7, 2022

Copy link
Copy Markdown
Contributor

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

@typescript-bot

typescript-bot commented Oct 7, 2022

Copy link
Copy Markdown
Contributor

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

@typescript-bot

typescript-bot commented Oct 7, 2022

Copy link
Copy Markdown
Contributor

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

Update: The results are in!

@typescript-bot

Copy link
Copy Markdown
Contributor

@ahejlsberg Here are the results of running the user test suite comparing main and refs/pull/51095/merge:

Everything looks good!

@typescript-bot

Copy link
Copy Markdown
Contributor

Heya @ahejlsberg, I've run the RWC suite on this PR - assuming you're on the TS core team, you can view the resulting diff here.

@typescript-bot

Copy link
Copy Markdown
Contributor

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

Here they are:

Comparison Report - main..51095

Metric main 51095 Delta Best Worst
Angular - node (v14.15.1, x64)
Memory used 346,895k (± 0.01%) 346,915k (± 0.01%) +20k (+ 0.01%) 346,871k 346,963k
Parse Time 2.09s (± 1.01%) 2.09s (± 0.76%) +0.00s (+ 0.14%) 2.06s 2.13s
Bind Time 0.79s (± 0.60%) 0.79s (± 0.73%) 0.00s ( 0.00%) 0.78s 0.81s
Check Time 5.98s (± 0.42%) 5.99s (± 0.40%) +0.01s (+ 0.15%) 5.96s 6.05s
Emit Time 6.26s (± 0.70%) 6.30s (± 0.56%) +0.04s (+ 0.70%) 6.20s 6.36s
Total Time 15.13s (± 0.34%) 15.18s (± 0.32%) +0.06s (+ 0.38%) 15.04s 15.28s
Compiler-Unions - node (v14.15.1, x64)
Memory used 190,222k (± 0.01%) 191,402k (± 0.91%) +1,180k (+ 0.62%) 190,172k 196,091k
Parse Time 0.86s (± 0.52%) 0.87s (± 0.79%) +0.00s (+ 0.46%) 0.85s 0.88s
Bind Time 0.49s (± 1.06%) 0.48s (± 0.77%) -0.00s (- 0.82%) 0.48s 0.49s
Check Time 6.78s (± 0.74%) 6.73s (± 0.65%) -0.04s (- 0.63%) 6.65s 6.88s
Emit Time 2.42s (± 1.23%) 2.39s (± 0.71%) -0.02s (- 0.99%) 2.36s 2.44s
Total Time 10.54s (± 0.56%) 10.48s (± 0.53%) -0.07s (- 0.63%) 10.39s 10.66s
Monaco - node (v14.15.1, x64)
Memory used 326,589k (± 0.00%) 326,580k (± 0.01%) -9k (- 0.00%) 326,518k 326,622k
Parse Time 1.58s (± 0.79%) 1.58s (± 0.60%) -0.00s (- 0.06%) 1.56s 1.60s
Bind Time 0.72s (± 0.69%) 0.72s (± 0.51%) 0.00s ( 0.00%) 0.72s 0.73s
Check Time 5.75s (± 0.51%) 5.75s (± 0.49%) -0.00s (- 0.07%) 5.69s 5.82s
Emit Time 3.40s (± 1.35%) 3.40s (± 0.78%) -0.00s (- 0.15%) 3.35s 3.46s
Total Time 11.46s (± 0.44%) 11.45s (± 0.44%) -0.02s (- 0.14%) 11.36s 11.56s
TFS - node (v14.15.1, x64)
Memory used 289,705k (± 0.01%) 289,702k (± 0.01%) -3k (- 0.00%) 289,630k 289,760k
Parse Time 1.29s (± 0.90%) 1.29s (± 0.65%) -0.00s (- 0.23%) 1.28s 1.32s
Bind Time 0.80s (± 1.16%) 0.79s (± 1.22%) -0.01s (- 1.63%) 0.75s 0.80s
Check Time 5.42s (± 0.51%) 5.42s (± 0.36%) -0.00s (- 0.02%) 5.38s 5.48s
Emit Time 3.62s (± 0.78%) 3.60s (± 0.66%) -0.02s (- 0.58%) 3.55s 3.65s
Total Time 11.13s (± 0.45%) 11.10s (± 0.33%) -0.04s (- 0.31%) 11.01s 11.16s
material-ui - node (v14.15.1, x64)
Memory used 435,669k (± 0.01%) 435,689k (± 0.00%) +19k (+ 0.00%) 435,648k 435,726k
Parse Time 1.89s (± 0.51%) 1.89s (± 0.95%) -0.00s (- 0.00%) 1.86s 1.95s
Bind Time 0.58s (± 0.99%) 0.58s (± 0.82%) 0.00s ( 0.00%) 0.57s 0.59s
Check Time 12.93s (± 0.58%) 12.96s (± 0.52%) +0.02s (+ 0.15%) 12.78s 13.12s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 15.41s (± 0.51%) 15.42s (± 0.49%) +0.02s (+ 0.12%) 15.22s 15.57s
xstate - node (v14.15.1, x64)
Memory used 544,084k (± 0.00%) 544,098k (± 0.00%) +15k (+ 0.00%) 544,063k 544,132k
Parse Time 2.62s (± 0.42%) 2.63s (± 0.39%) +0.01s (+ 0.23%) 2.60s 2.65s
Bind Time 0.97s (± 0.97%) 0.99s (± 1.18%) +0.01s (+ 1.23%) 0.96s 1.01s
Check Time 1.52s (± 0.44%) 1.53s (± 0.49%) +0.00s (+ 0.26%) 1.51s 1.55s
Emit Time 0.07s (± 3.14%) 0.07s (± 4.13%) +0.00s (+ 1.41%) 0.07s 0.08s
Total Time 5.20s (± 0.36%) 5.22s (± 0.33%) +0.02s (+ 0.29%) 5.18s 5.25s
Angular - node (v10.16.3, x64)
Memory used 371,391k (± 0.02%) 371,313k (± 0.03%) -79k (- 0.02%) 371,173k 371,624k
Parse Time 2.09s (± 0.51%) 2.10s (± 0.45%) +0.01s (+ 0.67%) 2.09s 2.13s
Bind Time 0.78s (± 0.43%) 0.79s (± 0.94%) +0.01s (+ 1.28%) 0.78s 0.81s
Check Time 6.37s (± 0.46%) 6.34s (± 0.30%) -0.03s (- 0.39%) 6.30s 6.38s
Emit Time 6.11s (± 0.86%) 6.18s (± 1.38%) +0.06s (+ 1.05%) 6.07s 6.45s
Total Time 15.35s (± 0.43%) 15.42s (± 0.48%) +0.06s (+ 0.42%) 15.28s 15.65s
Compiler-Unions - node (v10.16.3, x64)
Memory used 206,352k (± 0.03%) 206,324k (± 0.05%) -28k (- 0.01%) 206,027k 206,531k
Parse Time 0.84s (± 0.35%) 0.85s (± 0.80%) +0.00s (+ 0.48%) 0.82s 0.85s
Bind Time 0.47s (± 1.41%) 0.47s (± 0.47%) +0.00s (+ 0.21%) 0.47s 0.48s
Check Time 8.46s (± 0.51%) 8.49s (± 0.68%) +0.03s (+ 0.33%) 8.35s 8.63s
Emit Time 2.46s (± 1.20%) 2.49s (± 0.87%) +0.03s (+ 1.02%) 2.44s 2.55s
Total Time 12.24s (± 0.44%) 12.29s (± 0.51%) +0.06s (+ 0.48%) 12.13s 12.43s
Monaco - node (v10.16.3, x64)
Memory used 344,839k (± 0.02%) 344,820k (± 0.02%) -20k (- 0.01%) 344,694k 345,017k
Parse Time 1.61s (± 0.58%) 1.61s (± 0.71%) +0.00s (+ 0.25%) 1.58s 1.64s
Bind Time 0.70s (± 0.42%) 0.70s (± 0.74%) -0.00s (- 0.43%) 0.69s 0.71s
Check Time 6.25s (± 0.47%) 6.22s (± 0.64%) -0.03s (- 0.43%) 6.14s 6.30s
Emit Time 3.26s (± 0.92%) 3.27s (± 1.11%) +0.01s (+ 0.37%) 3.18s 3.39s
Total Time 11.82s (± 0.41%) 11.80s (± 0.46%) -0.01s (- 0.12%) 11.71s 11.96s
TFS - node (v10.16.3, x64)
Memory used 306,096k (± 0.02%) 306,147k (± 0.02%) +51k (+ 0.02%) 305,991k 306,228k
Parse Time 1.30s (± 0.73%) 1.30s (± 0.53%) -0.00s (- 0.08%) 1.28s 1.31s
Bind Time 0.68s (± 0.55%) 0.67s (± 1.04%) -0.00s (- 0.59%) 0.66s 0.69s
Check Time 5.53s (± 0.55%) 5.52s (± 0.59%) -0.01s (- 0.22%) 5.47s 5.61s
Emit Time 3.45s (± 1.13%) 3.40s (± 1.23%) -0.04s (- 1.28%) 3.33s 3.55s
Total Time 10.95s (± 0.43%) 10.89s (± 0.64%) -0.06s (- 0.56%) 10.77s 11.13s
material-ui - node (v10.16.3, x64)
Memory used 458,141k (± 0.01%) 458,140k (± 0.01%) -2k (- 0.00%) 457,967k 458,231k
Parse Time 1.85s (± 0.72%) 1.85s (± 0.68%) -0.01s (- 0.43%) 1.82s 1.87s
Bind Time 0.57s (± 1.28%) 0.57s (± 2.25%) +0.00s (+ 0.88%) 0.55s 0.61s
Check Time 15.85s (± 0.57%) 15.77s (± 0.80%) -0.08s (- 0.50%) 15.55s 16.01s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 18.28s (± 0.53%) 18.19s (± 0.74%) -0.08s (- 0.45%) 17.95s 18.45s
xstate - node (v10.16.3, x64)
Memory used 581,032k (± 0.01%) 581,022k (± 0.01%) -11k (- 0.00%) 580,876k 581,159k
Parse Time 2.61s (± 0.23%) 2.61s (± 0.46%) +0.01s (+ 0.35%) 2.59s 2.65s
Bind Time 0.90s (± 1.04%) 0.91s (± 0.88%) +0.01s (+ 0.55%) 0.89s 0.92s
Check Time 1.61s (± 0.48%) 1.61s (± 0.68%) +0.00s (+ 0.06%) 1.59s 1.64s
Emit Time 0.07s (± 3.14%) 0.07s (± 4.13%) +0.00s (+ 1.41%) 0.07s 0.08s
Total Time 5.19s (± 0.39%) 5.21s (± 0.43%) +0.02s (+ 0.37%) 5.16s 5.27s
Angular - node (v12.1.0, x64)
Memory used 348,898k (± 0.01%) 348,754k (± 0.09%) -144k (- 0.04%) 347,508k 349,034k
Parse Time 2.10s (± 0.84%) 2.11s (± 0.73%) +0.01s (+ 0.43%) 2.06s 2.14s
Bind Time 0.77s (± 0.80%) 0.77s (± 0.47%) -0.00s (- 0.39%) 0.76s 0.77s
Check Time 5.98s (± 0.43%) 6.00s (± 0.86%) +0.01s (+ 0.23%) 5.91s 6.18s
Emit Time 6.29s (± 0.60%) 6.34s (± 0.69%) +0.04s (+ 0.70%) 6.25s 6.44s
Total Time 15.15s (± 0.41%) 15.21s (± 0.68%) +0.06s (+ 0.42%) 14.97s 15.53s
Compiler-Unions - node (v12.1.0, x64)
Memory used 193,617k (± 0.54%) 193,032k (± 0.57%) -585k (- 0.30%) 190,641k 194,395k
Parse Time 0.83s (± 0.82%) 0.84s (± 0.48%) +0.00s (+ 0.60%) 0.83s 0.85s
Bind Time 0.48s (± 1.00%) 0.47s (± 0.77%) -0.00s (- 0.63%) 0.47s 0.48s
Check Time 6.74s (± 0.60%) 6.74s (± 0.66%) 0.00s ( 0.00%) 6.66s 6.87s
Emit Time 2.46s (± 1.04%) 2.45s (± 1.50%) -0.01s (- 0.32%) 2.41s 2.59s
Total Time 10.52s (± 0.56%) 10.51s (± 0.51%) -0.01s (- 0.08%) 10.41s 10.62s
Monaco - node (v12.1.0, x64)
Memory used 327,796k (± 0.03%) 327,774k (± 0.02%) -22k (- 0.01%) 327,596k 327,926k
Parse Time 1.60s (± 0.62%) 1.59s (± 1.00%) -0.01s (- 0.75%) 1.55s 1.63s
Bind Time 0.70s (± 0.67%) 0.70s (± 0.64%) -0.00s (- 0.29%) 0.69s 0.71s
Check Time 5.86s (± 0.51%) 5.84s (± 0.42%) -0.02s (- 0.36%) 5.76s 5.88s
Emit Time 3.33s (± 0.72%) 3.35s (± 1.13%) +0.02s (+ 0.75%) 3.29s 3.44s
Total Time 11.49s (± 0.37%) 11.48s (± 0.55%) -0.01s (- 0.10%) 11.32s 11.62s
TFS - node (v12.1.0, x64)
Memory used 290,690k (± 0.02%) 290,798k (± 0.04%) +108k (+ 0.04%) 290,631k 291,101k
Parse Time 1.30s (± 0.63%) 1.30s (± 0.92%) +0.00s (+ 0.23%) 1.27s 1.33s
Bind Time 0.68s (± 0.86%) 0.68s (± 0.91%) +0.00s (+ 0.30%) 0.67s 0.69s
Check Time 5.41s (± 0.22%) 5.43s (± 0.40%) +0.02s (+ 0.35%) 5.37s 5.46s
Emit Time 3.48s (± 0.99%) 3.50s (± 0.66%) +0.02s (+ 0.57%) 3.45s 3.55s
Total Time 10.87s (± 0.34%) 10.91s (± 0.43%) +0.04s (+ 0.37%) 10.82s 11.00s
material-ui - node (v12.1.0, x64)
Memory used 437,390k (± 0.01%) 437,211k (± 0.09%) -179k (- 0.04%) 436,164k 437,567k
Parse Time 1.83s (± 0.48%) 1.84s (± 0.38%) +0.01s (+ 0.33%) 1.82s 1.85s
Bind Time 0.55s (± 1.28%) 0.55s (± 0.54%) -0.00s (- 0.18%) 0.54s 0.55s
Check Time 12.87s (± 0.73%) 12.98s (± 1.28%) +0.10s (+ 0.80%) 12.72s 13.49s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 15.26s (± 0.63%) 15.36s (± 1.08%) +0.10s (+ 0.67%) 15.10s 15.87s
xstate - node (v12.1.0, x64)
Memory used 546,340k (± 0.01%) 549,565k (± 1.29%) +3,225k (+ 0.59%) 546,249k 578,095k
Parse Time 2.57s (± 0.48%) 2.56s (± 0.55%) -0.01s (- 0.35%) 2.52s 2.59s
Bind Time 0.88s (± 0.54%) 0.89s (± 0.58%) +0.01s (+ 0.91%) 0.88s 0.90s
Check Time 1.49s (± 0.50%) 1.49s (± 0.71%) -0.01s (- 0.40%) 1.46s 1.51s
Emit Time 0.07s (± 0.00%) 0.07s (± 0.00%) 0.00s ( 0.00%) 0.07s 0.07s
Total Time 5.01s (± 0.27%) 5.01s (± 0.49%) -0.00s (- 0.04%) 4.94s 5.05s
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 (v14.15.1, x64)
  • node (v10.16.3, x64)
  • node (v12.1.0, x64)
Scenarios
  • Angular - node (v14.15.1, x64)
  • Angular - node (v10.16.3, x64)
  • Angular - node (v12.1.0, x64)
  • Compiler-Unions - node (v14.15.1, x64)
  • Compiler-Unions - node (v10.16.3, x64)
  • Compiler-Unions - node (v12.1.0, x64)
  • Monaco - node (v14.15.1, x64)
  • Monaco - node (v10.16.3, x64)
  • Monaco - node (v12.1.0, x64)
  • TFS - node (v14.15.1, x64)
  • TFS - node (v10.16.3, x64)
  • TFS - node (v12.1.0, x64)
  • material-ui - node (v14.15.1, x64)
  • material-ui - node (v10.16.3, x64)
  • material-ui - node (v12.1.0, x64)
  • xstate - node (v14.15.1, x64)
  • xstate - node (v10.16.3, x64)
  • xstate - node (v12.1.0, x64)
Benchmark Name Iterations
Current 51095 10
Baseline main 10

Developer Information:

Download Benchmark

@typescript-bot

Copy link
Copy Markdown
Contributor

@ahejlsberg Here are the results of running the top-repos suite comparing main and refs/pull/51095/merge:

Everything looks good!

@microsoft microsoft locked as resolved and limited conversation to collaborators Oct 22, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

Author: Team For Milestone Bug PRs that fix a bug with a specific milestone

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Incorrect narrowing of union to never after no-op switch in while loop

3 participants