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

Improve logic that chooses co- vs. contra-variant inferences #52123

Merged
merged 2 commits into from
Jan 6, 2023
Merged

Conversation

ahejlsberg
Copy link
Member

Fixes #52111.

@jakebailey
Copy link
Member

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

@typescript-bot
Copy link
Collaborator

typescript-bot commented Jan 6, 2023

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

@typescript-bot
Copy link
Collaborator

typescript-bot commented Jan 6, 2023

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

@typescript-bot
Copy link
Collaborator

typescript-bot commented Jan 6, 2023

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

@typescript-bot
Copy link
Collaborator

typescript-bot commented Jan 6, 2023

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

Update: The results are in!

@typescript-bot
Copy link
Collaborator

typescript-bot commented Jan 6, 2023

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

Update: The results are in!

@typescript-bot
Copy link
Collaborator

typescript-bot commented Jan 6, 2023

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

Update: The results are in!

@typescript-bot
Copy link
Collaborator

typescript-bot commented Jan 6, 2023

Hey @jakebailey, 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/141820/artifacts?artifactName=tgz&fileId=571630FA0136B72F65125DEE199C24B9DB867FD2DFDC575B2F67317C7ED5F5C102&fileName=/typescript-5.0.0-insiders.20230106.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@5.0.0-pr-52123-7".;

@jakebailey
Copy link
Member

I can confirm that this fixes all of my cast/assert issues on the SFT branch. Wonderful!

@typescript-bot
Copy link
Collaborator

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

Everything looks good!

@typescript-bot
Copy link
Collaborator

Heya @jakebailey, 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
Collaborator

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

Everything looks good!

@typescript-bot
Copy link
Collaborator

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

Here they are:

Compiler

Comparison Report - main..52123
Metric main 52123 Delta Best Worst
Angular - node (v18.10.0, x64)
Memory used 372,656k (± 0.01%) 372,647k (± 0.01%) -9k (- 0.00%) 372,574k 372,722k
Parse Time 3.96s (± 0.66%) 3.95s (± 0.82%) -0.01s (- 0.17%) 3.91s 3.99s
Bind Time 1.20s (± 1.12%) 1.20s (± 1.39%) +0.00s (+ 0.12%) 1.18s 1.22s
Check Time 8.58s (± 0.52%) 8.61s (± 0.50%) +0.03s (+ 0.39%) 8.54s 8.66s
Emit Time 7.55s (± 0.73%) 7.53s (± 1.05%) -0.02s (- 0.30%) 7.46s 7.68s
Total Time 21.29s (± 0.47%) 21.30s (± 0.34%) +0.01s (+ 0.03%) 21.20s 21.37s
Compiler-Unions - node (v18.10.0, x64)
Memory used 199,315k (± 1.16%) 199,326k (± 1.20%) +11k (+ 0.01%) 198,311k 204,208k
Parse Time 1.64s (± 0.81%) 1.65s (± 1.09%) +0.01s (+ 0.81%) 1.62s 1.67s
Bind Time 0.79s (± 0.70%) 0.79s (± 0.66%) -0.00s (- 0.21%) 0.79s 0.80s
Check Time 9.47s (± 0.43%) 9.51s (± 0.41%) +0.05s (+ 0.49%) 9.44s 9.56s
Emit Time 2.75s (± 1.00%) 2.76s (± 1.06%) +0.01s (+ 0.55%) 2.72s 2.80s
Total Time 14.64s (± 0.34%) 14.71s (± 0.31%) +0.07s (+ 0.49%) 14.64s 14.78s
Monaco - node (v18.10.0, x64)
Memory used 354,086k (± 0.02%) 354,085k (± 0.01%) -1k (- 0.00%) 354,039k 354,133k
Parse Time 2.97s (± 1.00%) 2.96s (± 0.79%) -0.02s (- 0.57%) 2.92s 2.99s
Bind Time 1.05s (± 0.86%) 1.04s (± 1.37%) -0.01s (- 0.54%) 1.03s 1.07s
Check Time 7.22s (± 0.38%) 7.23s (± 0.40%) +0.01s (+ 0.12%) 7.19s 7.27s
Emit Time 4.27s (± 1.06%) 4.23s (± 0.22%) -0.04s (- 1.04%) 4.21s 4.24s
Total Time 15.51s (± 0.45%) 15.46s (± 0.20%) -0.06s (- 0.36%) 15.41s 15.50s
TFS - node (v18.10.0, x64)
Memory used 310,033k (± 0.00%) 310,021k (± 0.01%) -13k (- 0.00%) 309,992k 310,042k
Parse Time 2.26s (± 0.93%) 2.26s (± 1.21%) +0.00s (+ 0.00%) 2.22s 2.30s
Bind Time 1.16s (± 0.74%) 1.16s (± 0.69%) +0.00s (+ 0.14%) 1.15s 1.17s
Check Time 6.80s (± 0.49%) 6.79s (± 0.49%) -0.01s (- 0.12%) 6.75s 6.85s
Emit Time 3.92s (± 0.73%) 3.90s (± 0.36%) -0.01s (- 0.38%) 3.88s 3.91s
Total Time 14.13s (± 0.32%) 14.10s (± 0.32%) -0.02s (- 0.15%) 14.06s 14.18s
material-ui - node (v18.10.0, x64)
Memory used 485,238k (± 0.01%) 485,221k (± 0.01%) -17k (- 0.00%) 485,180k 485,300k
Parse Time 3.52s (± 0.32%) 3.53s (± 0.59%) +0.01s (+ 0.41%) 3.50s 3.56s
Bind Time 0.96s (± 0.93%) 0.97s (± 0.96%) +0.00s (+ 0.45%) 0.95s 0.97s
Check Time 16.91s (± 0.26%) 16.93s (± 0.67%) +0.02s (+ 0.14%) 16.76s 17.07s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 21.38s (± 0.21%) 21.43s (± 0.57%) +0.05s (+ 0.21%) 21.27s 21.59s
xstate - node (v18.10.0, x64)
Memory used 570,392k (± 0.02%) 570,241k (± 0.03%) -151k (- 0.03%) 570,089k 570,489k
Parse Time 4.41s (± 0.52%) 4.43s (± 0.58%) +0.02s (+ 0.39%) 4.40s 4.47s
Bind Time 1.69s (± 1.61%) 1.71s (± 0.54%) +0.02s (+ 0.94%) 1.70s 1.72s
Check Time 2.60s (± 0.54%) 2.60s (± 0.86%) -0.01s (- 0.20%) 2.57s 2.63s
Emit Time 0.08s (± 0.17%) 0.08s (± 0.20%) -0.00s (- 0.13%) 0.08s 0.08s
Total Time 8.80s (± 0.41%) 8.82s (± 0.28%) +0.02s (+ 0.24%) 8.79s 8.86s
Angular - node (v16.17.1, x64)
Memory used 372,007k (± 0.01%) 371,978k (± 0.01%) -29k (- 0.01%) 371,924k 372,021k
Parse Time 4.13s (± 0.32%) 4.15s (± 0.87%) +0.03s (+ 0.63%) 4.12s 4.21s
Bind Time 1.27s (± 0.55%) 1.27s (± 0.96%) +0.00s (+ 0.10%) 1.25s 1.28s
Check Time 9.31s (± 0.52%) 9.29s (± 0.40%) -0.02s (- 0.22%) 9.23s 9.34s
Emit Time 8.03s (± 0.55%) 8.01s (± 0.28%) -0.02s (- 0.25%) 7.99s 8.04s
Total Time 22.74s (± 0.12%) 22.72s (± 0.26%) -0.01s (- 0.05%) 22.65s 22.81s
Compiler-Unions - node (v16.17.1, x64)
Memory used 200,590k (± 0.64%) 201,106k (± 0.86%) +516k (+ 0.26%) 199,946k 203,457k
Parse Time 1.81s (± 0.57%) 1.81s (± 0.58%) -0.00s (- 0.09%) 1.80s 1.83s
Bind Time 0.84s (± 1.22%) 0.84s (± 1.22%) -0.00s (- 0.00%) 0.83s 0.86s
Check Time 10.12s (± 1.29%) 10.04s (± 0.58%) -0.08s (- 0.82%) 9.95s 10.10s
Emit Time 2.99s (± 1.21%) 2.98s (± 1.11%) -0.01s (- 0.22%) 2.93s 3.03s
Total Time 15.76s (± 1.06%) 15.67s (± 0.51%) -0.09s (- 0.60%) 15.53s 15.74s
Monaco - node (v16.17.1, x64)
Memory used 353,413k (± 0.01%) 353,393k (± 0.01%) -20k (- 0.01%) 353,356k 353,435k
Parse Time 3.17s (± 0.54%) 3.17s (± 0.55%) +0.00s (+ 0.04%) 3.14s 3.19s
Bind Time 1.13s (± 1.34%) 1.13s (± 1.24%) +0.00s (+ 0.38%) 1.12s 1.15s
Check Time 7.85s (± 0.45%) 7.86s (± 0.62%) +0.01s (+ 0.12%) 7.77s 7.92s
Emit Time 4.49s (± 0.49%) 4.48s (± 0.41%) -0.01s (- 0.18%) 4.47s 4.52s
Total Time 16.63s (± 0.18%) 16.64s (± 0.28%) +0.01s (+ 0.08%) 16.58s 16.70s
TFS - node (v16.17.1, x64)
Memory used 309,368k (± 0.00%) 309,375k (± 0.01%) +7k (+ 0.00%) 309,354k 309,401k
Parse Time 2.60s (± 1.08%) 2.60s (± 1.39%) -0.01s (- 0.22%) 2.55s 2.65s
Bind Time 1.07s (± 2.18%) 1.07s (± 1.57%) -0.00s (- 0.06%) 1.05s 1.10s
Check Time 7.39s (± 0.50%) 7.41s (± 0.38%) +0.01s (+ 0.19%) 7.37s 7.45s
Emit Time 4.19s (± 0.49%) 4.22s (± 0.44%) +0.02s (+ 0.53%) 4.19s 4.24s
Total Time 15.26s (± 0.33%) 15.29s (± 0.38%) +0.03s (+ 0.20%) 15.24s 15.39s
material-ui - node (v16.17.1, x64)
Memory used 484,506k (± 0.00%) 484,506k (± 0.00%) +1k (+ 0.00%) 484,486k 484,531k
Parse Time 3.67s (± 0.35%) 3.67s (± 0.31%) +0.00s (+ 0.00%) 3.67s 3.70s
Bind Time 1.01s (± 0.47%) 1.01s (± 0.38%) +0.00s (+ 0.36%) 1.01s 1.02s
Check Time 17.85s (± 0.25%) 17.83s (± 0.32%) -0.02s (- 0.12%) 17.77s 17.93s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 22.54s (± 0.22%) 22.52s (± 0.26%) -0.01s (- 0.06%) 22.46s 22.63s
xstate - node (v16.17.1, x64)
Memory used 567,851k (± 0.02%) 567,821k (± 0.02%) -30k (- 0.01%) 567,705k 567,932k
Parse Time 4.75s (± 0.34%) 4.76s (± 0.24%) +0.02s (+ 0.34%) 4.74s 4.77s
Bind Time 1.65s (± 0.61%) 1.66s (± 0.46%) +0.01s (+ 0.54%) 1.64s 1.67s
Check Time 2.83s (± 0.51%) 2.83s (± 0.60%) +0.00s (+ 0.01%) 2.80s 2.85s
Emit Time 0.09s (± 0.16%) 0.09s (± 0.16%) +0.00s (+ 0.13%) 0.09s 0.09s
Total Time 9.31s (± 0.30%) 9.34s (± 0.21%) +0.03s (+ 0.33%) 9.31s 9.36s
Angular - node (v14.15.1, x64)
Memory used 365,663k (± 0.00%) 365,647k (± 0.00%) -16k (- 0.00%) 365,637k 365,654k
Parse Time 4.15s (± 0.91%) 4.15s (± 0.61%) +0.00s (+ 0.07%) 4.12s 4.19s
Bind Time 1.30s (± 0.65%) 1.30s (± 0.60%) +0.00s (+ 0.16%) 1.30s 1.32s
Check Time 9.68s (± 0.51%) 9.68s (± 0.51%) -0.01s (- 0.05%) 9.62s 9.76s
Emit Time 8.20s (± 0.55%) 8.22s (± 0.85%) +0.02s (+ 0.24%) 8.14s 8.30s
Total Time 23.34s (± 0.30%) 23.36s (± 0.48%) +0.01s (+ 0.06%) 23.23s 23.48s
Compiler-Unions - node (v14.15.1, x64)
Memory used 195,146k (± 0.02%) 195,158k (± 0.02%) +13k (+ 0.01%) 195,120k 195,215k
Parse Time 1.85s (± 0.37%) 1.84s (± 0.54%) -0.00s (- 0.22%) 1.83s 1.86s
Bind Time 0.87s (± 0.52%) 0.87s (± 0.63%) -0.00s (- 0.32%) 0.87s 0.88s
Check Time 10.15s (± 0.84%) 10.15s (± 0.52%) -0.00s (- 0.04%) 10.09s 10.22s
Emit Time 3.13s (± 0.71%) 3.13s (± 0.93%) +0.00s (+ 0.13%) 3.08s 3.16s
Total Time 16.00s (± 0.41%) 16.00s (± 0.39%) -0.01s (- 0.04%) 15.93s 16.08s
Monaco - node (v14.15.1, x64)
Memory used 348,245k (± 0.01%) 348,242k (± 0.01%) -3k (- 0.00%) 348,189k 348,281k
Parse Time 3.22s (± 1.14%) 3.27s (± 0.51%) +0.04s (+ 1.30%) 3.24s 3.28s
Bind Time 1.12s (± 0.59%) 1.12s (± 0.39%) -0.00s (- 0.08%) 1.12s 1.13s
Check Time 8.15s (± 0.23%) 8.16s (± 0.55%) +0.01s (+ 0.11%) 8.11s 8.22s
Emit Time 4.70s (± 0.67%) 4.70s (± 0.67%) -0.00s (- 0.04%) 4.66s 4.75s
Total Time 17.19s (± 0.41%) 17.25s (± 0.38%) +0.05s (+ 0.32%) 17.19s 17.34s
TFS - node (v14.15.1, x64)
Memory used 304,287k (± 0.01%) 304,291k (± 0.00%) +4k (+ 0.00%) 304,275k 304,309k
Parse Time 2.72s (± 0.30%) 2.72s (± 1.14%) -0.00s (- 0.05%) 2.67s 2.75s
Bind Time 1.08s (± 0.55%) 1.08s (± 0.71%) +0.00s (+ 0.37%) 1.07s 1.09s
Check Time 7.69s (± 0.45%) 7.71s (± 0.67%) +0.03s (+ 0.37%) 7.62s 7.77s
Emit Time 4.55s (± 0.94%) 4.58s (± 0.75%) +0.02s (+ 0.50%) 4.52s 4.62s
Total Time 16.04s (± 0.39%) 16.09s (± 0.17%) +0.05s (+ 0.30%) 16.04s 16.13s
material-ui - node (v14.15.1, x64)
Memory used 479,942k (± 0.01%) 479,941k (± 0.00%) -1k (- 0.00%) 479,911k 479,967k
Parse Time 3.89s (± 0.80%) 3.89s (± 0.60%) +0.01s (+ 0.22%) 3.87s 3.92s
Bind Time 1.04s (± 0.74%) 1.05s (± 0.83%) +0.00s (+ 0.31%) 1.03s 1.06s
Check Time 18.99s (± 0.58%) 18.83s (± 0.77%) -0.15s (- 0.81%) 18.62s 18.99s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 23.92s (± 0.41%) 23.78s (± 0.73%) -0.15s (- 0.61%) 23.51s 23.98s
xstate - node (v14.15.1, x64)
Memory used 556,177k (± 0.00%) 556,181k (± 0.01%) +4k (+ 0.00%) 556,121k 556,221k
Parse Time 5.14s (± 0.72%) 5.11s (± 0.60%) -0.03s (- 0.59%) 5.06s 5.14s
Bind Time 1.58s (± 0.77%) 1.59s (± 0.91%) +0.01s (+ 0.54%) 1.57s 1.61s
Check Time 2.99s (± 0.55%) 2.99s (± 0.53%) +0.00s (+ 0.13%) 2.97s 3.02s
Emit Time 0.10s (± 0.08%) 0.10s (± 0.08%) -0.00s (- 0.20%) 0.10s 0.10s
Total Time 9.81s (± 0.47%) 9.79s (± 0.49%) -0.02s (- 0.17%) 9.71s 9.85s
System
Machine Namets-ci-ubuntu
Platformlinux 5.4.0-135-generic
Architecturex64
Available Memory16 GB
Available Memory15 GB
CPUs4 × Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz
Hosts
  • node (v18.10.0, x64)
  • node (v16.17.1, x64)
  • node (v14.15.1, x64)
Scenarios
  • Angular - node (v18.10.0, x64)
  • Angular - node (v16.17.1, x64)
  • Angular - node (v14.15.1, x64)
  • Compiler-Unions - node (v18.10.0, x64)
  • Compiler-Unions - node (v16.17.1, x64)
  • Compiler-Unions - node (v14.15.1, x64)
  • Monaco - node (v18.10.0, x64)
  • Monaco - node (v16.17.1, x64)
  • Monaco - node (v14.15.1, x64)
  • TFS - node (v18.10.0, x64)
  • TFS - node (v16.17.1, x64)
  • TFS - node (v14.15.1, x64)
  • material-ui - node (v18.10.0, x64)
  • material-ui - node (v16.17.1, x64)
  • material-ui - node (v14.15.1, x64)
  • xstate - node (v18.10.0, x64)
  • xstate - node (v16.17.1, x64)
  • xstate - node (v14.15.1, x64)
Benchmark Name Iterations
Current 52123 6
Baseline main 6

TSServer

Comparison Report - main..52123
Metric main 52123 Delta Best Worst
Compiler-UnionsTSServer - node (v18.10.0, x64)
Req 1 - updateOpen 2,540ms (± 1.47%) 2,553ms (± 2.14%) +12ms (+ 0.49%) 2,478ms 2,632ms
Req 2 - geterr 5,368ms (± 0.91%) 5,384ms (± 1.60%) +17ms (+ 0.31%) 5,293ms 5,542ms
Req 3 - references 369ms (± 0.64%) 366ms (± 2.16%) -3ms (- 0.78%) 354ms 371ms
Req 4 - navto 282ms (± 2.49%) 288ms (± 3.70%) +6ms (+ 2.00%) 276ms 300ms
Req 5 - completionInfo count 1,356 (± 0.00%) 1,356 (± 0.00%) 0 ( 0.00%) 1,356 1,356
Req 5 - completionInfo 300ms (± 3.08%) 265ms (±33.49%) 🟩-35ms (-11.81%) 84ms 310ms
CompilerTSServer - node (v18.10.0, x64)
Req 1 - updateOpen 2,728ms (± 1.41%) 2,766ms (± 0.48%) +38ms (+ 1.41%) 2,748ms 2,784ms
Req 2 - geterr 3,960ms (± 0.67%) 3,968ms (± 0.66%) +8ms (+ 0.21%) 3,940ms 4,014ms
Req 3 - references 361ms (± 1.20%) 361ms (± 0.71%) +1ms (+ 0.15%) 358ms 364ms
Req 4 - navto 289ms (± 1.06%) 290ms (± 1.37%) +1ms (+ 0.18%) 284ms 296ms
Req 5 - completionInfo count 1,518 (± 0.00%) 1,518 (± 0.00%) 0 ( 0.00%) 1,518 1,518
Req 5 - completionInfo 68ms (± 4.18%) 69ms (± 4.39%) +0ms (+ 0.29%) 65ms 73ms
xstateTSServer - node (v18.10.0, x64)
Req 1 - updateOpen 3,391ms (± 0.69%) 3,378ms (± 0.70%) -12ms (- 0.36%) 3,339ms 3,410ms
Req 2 - geterr 1,550ms (± 1.16%) 1,540ms (± 0.81%) -10ms (- 0.64%) 1,529ms 1,559ms
Req 3 - references 109ms (± 1.54%) 108ms (± 1.75%) -1ms (- 1.28%) 105ms 110ms
Req 4 - navto 359ms (± 1.20%) 358ms (± 1.18%) -1ms (- 0.26%) 354ms 364ms
Req 5 - completionInfo count 3,154 (± 0.00%) 3,154 (± 0.00%) 0 ( 0.00%) 3,154 3,154
Req 5 - completionInfo 434ms (± 1.90%) 438ms (± 0.95%) +4ms (+ 0.86%) 433ms 445ms
Compiler-UnionsTSServer - node (v16.17.1, x64)
Req 1 - updateOpen 2,778ms (± 0.29%) 2,753ms (± 0.82%) -25ms (- 0.89%) 2,724ms 2,780ms
Req 2 - geterr 5,775ms (± 1.67%) 5,884ms (± 1.74%) +110ms (+ 1.90%) 5,690ms 5,976ms
Req 3 - references 370ms (± 1.69%) 361ms (± 0.94%) -9ms (- 2.52%) 356ms 366ms
Req 4 - navto 281ms (± 1.46%) 283ms (± 1.83%) +2ms (+ 0.57%) 278ms 291ms
Req 5 - completionInfo count 1,356 (± 0.00%) 1,356 (± 0.00%) 0 ( 0.00%) 1,356 1,356
Req 5 - completionInfo 282ms (±33.59%) 130ms (±71.13%) 🟩-151ms (-53.75%) 90ms 320ms
CompilerTSServer - node (v16.17.1, x64)
Req 1 - updateOpen 2,911ms (± 0.66%) 2,924ms (± 0.49%) +13ms (+ 0.43%) 2,906ms 2,946ms
Req 2 - geterr 4,312ms (± 0.35%) 4,291ms (± 0.52%) -21ms (- 0.48%) 4,262ms 4,320ms
Req 3 - references 378ms (± 0.48%) 377ms (± 0.65%) -1ms (- 0.39%) 373ms 379ms
Req 4 - navto 301ms (± 0.55%) 302ms (± 1.42%) +1ms (+ 0.40%) 299ms 310ms
Req 5 - completionInfo count 1,518 (± 0.00%) 1,518 (± 0.00%) 0 ( 0.00%) 1,518 1,518
Req 5 - completionInfo 274ms (±35.85%) 314ms (± 0.84%) +40ms (+14.47%) 311ms 318ms
xstateTSServer - node (v16.17.1, x64)
Req 1 - updateOpen 3,768ms (± 0.21%) 3,755ms (± 0.61%) -13ms (- 0.35%) 3,726ms 3,796ms
Req 2 - geterr 1,467ms (± 1.33%) 1,452ms (± 0.90%) -16ms (- 1.06%) 1,432ms 1,469ms
Req 3 - references 112ms (± 3.57%) 112ms (± 3.66%) +0ms (+ 0.02%) 108ms 118ms
Req 4 - navto 344ms (± 1.97%) 346ms (± 3.02%) +3ms (+ 0.77%) 336ms 363ms
Req 5 - completionInfo count 3,154 (± 0.00%) 3,154 (± 0.00%) 0 ( 0.00%) 3,154 3,154
Req 5 - completionInfo 463ms (± 1.89%) 462ms (± 1.52%) -0ms (- 0.10%) 456ms 472ms
Compiler-UnionsTSServer - node (v14.15.1, x64)
Req 1 - updateOpen 2,880ms (± 0.28%) 2,890ms (± 0.72%) +11ms (+ 0.37%) 2,866ms 2,919ms
Req 2 - geterr 6,112ms (± 0.75%) 6,135ms (± 0.93%) +22ms (+ 0.37%) 6,068ms 6,214ms
Req 3 - references 383ms (± 1.11%) 384ms (± 1.27%) +2ms (+ 0.44%) 379ms 393ms
Req 4 - navto 290ms (± 1.05%) 292ms (± 0.67%) +2ms (+ 0.73%) 290ms 295ms
Req 5 - completionInfo count 1,356 (± 0.00%) 1,356 (± 0.00%) 0 ( 0.00%) 1,356 1,356
Req 5 - completionInfo 163ms (±73.80%) 323ms (± 1.05%) 🔻+160ms (+98.03%) 320ms 328ms
CompilerTSServer - node (v14.15.1, x64)
Req 1 - updateOpen 3,042ms (± 1.00%) 3,019ms (± 0.73%) -23ms (- 0.76%) 2,993ms 3,054ms
Req 2 - geterr 4,583ms (± 0.70%) 4,542ms (± 0.89%) -41ms (- 0.90%) 4,485ms 4,586ms
Req 3 - references 404ms (± 0.97%) 403ms (± 0.82%) -1ms (- 0.21%) 399ms 408ms
Req 4 - navto 308ms (± 1.19%) 306ms (± 0.66%) -2ms (- 0.79%) 304ms 308ms
Req 5 - completionInfo count 1,518 (± 0.00%) 1,518 (± 0.00%) 0 ( 0.00%) 1,518 1,518
Req 5 - completionInfo 86ms (±10.30%) 83ms (± 6.93%) -2ms (- 2.86%) 76ms 91ms
xstateTSServer - node (v14.15.1, x64)
Req 1 - updateOpen 3,865ms (± 0.89%) 3,876ms (± 0.51%) +11ms (+ 0.29%) 3,841ms 3,901ms
Req 2 - geterr 1,458ms (± 1.05%) 1,469ms (± 1.14%) +10ms (+ 0.71%) 1,452ms 1,495ms
Req 3 - references 131ms (± 1.74%) 134ms (± 1.26%) +2ms (+ 1.67%) 131ms 135ms
Req 4 - navto 391ms (± 1.07%) 398ms (± 1.33%) +7ms (+ 1.77%) 392ms 406ms
Req 5 - completionInfo count 3,154 (± 0.00%) 3,154 (± 0.00%) 0 ( 0.00%) 3,154 3,154
Req 5 - completionInfo 501ms (± 1.53%) 496ms (± 1.09%) -5ms (- 1.02%) 490ms 503ms
System
Machine Namets-ci-ubuntu
Platformlinux 5.4.0-135-generic
Architecturex64
Available Memory16 GB
Available Memory15 GB
CPUs4 × Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz
Hosts
  • node (v18.10.0, x64)
  • node (v16.17.1, x64)
  • node (v14.15.1, x64)
Scenarios
  • Compiler-UnionsTSServer - node (v18.10.0, x64)
  • Compiler-UnionsTSServer - node (v16.17.1, x64)
  • Compiler-UnionsTSServer - node (v14.15.1, x64)
  • CompilerTSServer - node (v18.10.0, x64)
  • CompilerTSServer - node (v16.17.1, x64)
  • CompilerTSServer - node (v14.15.1, x64)
  • xstateTSServer - node (v18.10.0, x64)
  • xstateTSServer - node (v16.17.1, x64)
  • xstateTSServer - node (v14.15.1, x64)
Benchmark Name Iterations
Current 52123 6
Baseline main 6

Startup

Comparison Report - main..52123
Metric main 52123 Delta Best Worst
tsc-startup - node (v16.17.1, x64)
Execution time 139.22ms (± 0.24%) 139.04ms (± 0.19%) -0.17ms (- 0.13%) 137.99ms 142.38ms
tsserver-startup - node (v16.17.1, x64)
Execution time 229.56ms (± 0.18%) 231.08ms (± 0.17%) +1.52ms (+ 0.66%) 229.64ms 234.89ms
tsserverlibrary-startup - node (v16.17.1, x64)
Execution time 232.52ms (± 0.17%) 233.46ms (± 0.19%) +0.93ms (+ 0.40%) 231.83ms 240.22ms
typescript-startup - node (v16.17.1, x64)
Execution time 213.99ms (± 0.21%) 214.98ms (± 0.16%) +0.99ms (+ 0.46%) 213.59ms 220.34ms
System
Machine Namets-ci-ubuntu
Platformlinux 5.4.0-135-generic
Architecturex64
Available Memory16 GB
Available Memory15 GB
CPUs4 × Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz
Hosts
  • node (v16.17.1, x64)
Scenarios
  • tsc-startup - node (v16.17.1, x64)
  • tsserver-startup - node (v16.17.1, x64)
  • tsserverlibrary-startup - node (v16.17.1, x64)
  • typescript-startup - node (v16.17.1, x64)
Benchmark Name Iterations
Current 52123 6
Baseline main 6

Developer Information:

Download Benchmark

@ahejlsberg ahejlsberg merged commit fc85386 into main Jan 6, 2023
@ahejlsberg ahejlsberg deleted the fix52111 branch January 6, 2023 15:56
@jakebailey jakebailey mentioned this pull request Jan 6, 2023
11 tasks
@jakebailey
Copy link
Member

Another example that I didn't realize was affected is this:

interface A {
    a: string;
}
interface B extends A {
    b: string;
}
interface C extends A {
    c: string
}

Then:

declare function isC(x: A): x is C;

declare function every<T, U extends T>(array: readonly T[], callback: (element: T, index: number) => element is U): array is readonly U[];
declare function every<T, U extends T>(array: readonly T[] | undefined, callback: (element: T, index: number) => element is U): array is readonly U[] | undefined;
declare function every<T>(array: readonly T[] | undefined, callback: (element: T, index: number) => boolean): boolean;

function foo(arr: readonly B[] | readonly C[] | undefined) {
    if (every(arr, isC)) {
        arr;
    }
}

In TS 4.9, this code errors because it picks every<B, B>, but now, it picks every<A, C>, and we get arr narrowed to readonly C[]. This comes up quite a bit on the SFT branch.

(I may send a PR for this test case too.)

jakebailey added a commit to jakebailey/TypeScript that referenced this pull request Jan 10, 2023
@jakebailey
Copy link
Member

I have another followup case that turned out to not be fixed (I also didn't catch it in the SFT branch in the same way as the above fixed case); I'll file a new issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
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.

Sub-optimal type parameter inference with strictFunctionTypes enabled
4 participants