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

Properly handle non-generic string mapping types in unions and intersections #57197

Merged
merged 3 commits into from
Jan 28, 2024

Conversation

ahejlsberg
Copy link
Member

Fixes #57192.

@ahejlsberg
Copy link
Member Author

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

@typescript-bot
Copy link
Collaborator

typescript-bot commented Jan 27, 2024

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

Update: The results are in!

@typescript-bot
Copy link
Collaborator

typescript-bot commented Jan 27, 2024

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

Update: The results are in!

@typescript-bot
Copy link
Collaborator

typescript-bot commented Jan 27, 2024

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

Update: The results are in!

@typescript-bot
Copy link
Collaborator

typescript-bot commented Jan 27, 2024

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

Update: The results are in!

@typescript-bot
Copy link
Collaborator

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

There were infrastructure failures potentially unrelated to your change:

  • 1 instance of "Package install failed"

Otherwise...

Something interesting changed - please have a look.

Details

puppeteer

packages/browsers/test/src/tsconfig.json

@typescript-bot
Copy link
Collaborator

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

Here they are:

tsc

Comparison Report - baseline..pr
Metric baseline pr Delta Best Worst p-value
Angular - node (v18.15.0, x64)
Memory used 295,659k (± 0.01%) 295,646k (± 0.01%) ~ 295,631k 295,674k p=0.468 n=6
Parse Time 2.66s (± 0.34%) 2.66s (± 0.55%) ~ 2.64s 2.68s p=0.804 n=6
Bind Time 0.83s (± 1.18%) 0.83s (± 1.52%) ~ 0.82s 0.85s p=0.799 n=6
Check Time 8.19s (± 0.24%) 8.20s (± 0.19%) ~ 8.17s 8.21s p=0.566 n=6
Emit Time 7.10s (± 0.35%) 7.09s (± 0.47%) ~ 7.06s 7.14s p=0.518 n=6
Total Time 18.79s (± 0.09%) 18.78s (± 0.26%) ~ 18.74s 18.85s p=0.572 n=6
Compiler-Unions - node (v18.15.0, x64)
Memory used 192,935k (± 1.25%) 191,536k (± 0.02%) ~ 191,490k 191,576k p=0.689 n=6
Parse Time 1.36s (± 1.21%) 1.35s (± 1.36%) ~ 1.33s 1.37s p=0.935 n=6
Bind Time 0.72s (± 0.00%) 0.72s (± 0.00%) ~ 0.72s 0.72s p=1.000 n=6
Check Time 9.34s (± 0.38%) 9.35s (± 0.43%) ~ 9.29s 9.40s p=0.809 n=6
Emit Time 2.63s (± 0.63%) 2.61s (± 0.82%) ~ 2.58s 2.64s p=0.169 n=6
Total Time 14.04s (± 0.16%) 14.03s (± 0.22%) ~ 13.99s 14.07s p=0.871 n=6
Monaco - node (v18.15.0, x64)
Memory used 347,460k (± 0.01%) 347,458k (± 0.00%) ~ 347,443k 347,477k p=0.936 n=6
Parse Time 2.48s (± 0.54%) 2.47s (± 0.21%) ~ 2.46s 2.47s p=0.140 n=6
Bind Time 0.92s (± 0.56%) 0.92s (± 0.59%) ~ 0.92s 0.93s p=0.640 n=6
Check Time 6.93s (± 0.43%) 6.94s (± 0.40%) ~ 6.91s 6.97s p=0.672 n=6
Emit Time 4.05s (± 0.33%) 4.06s (± 0.52%) ~ 4.04s 4.10s p=0.676 n=6
Total Time 14.38s (± 0.24%) 14.40s (± 0.21%) ~ 14.35s 14.43s p=0.745 n=6
TFS - node (v18.15.0, x64)
Memory used 302,839k (± 0.00%) 302,840k (± 0.01%) ~ 302,803k 302,881k p=0.936 n=6
Parse Time 2.01s (± 1.04%) 2.01s (± 0.68%) ~ 1.99s 2.02s p=0.934 n=6
Bind Time 1.01s (± 1.02%) 1.00s (± 1.09%) ~ 0.99s 1.02s p=0.241 n=6
Check Time 6.32s (± 0.31%) 6.33s (± 0.37%) ~ 6.30s 6.36s p=0.464 n=6
Emit Time 3.59s (± 0.25%) 3.60s (± 0.57%) ~ 3.57s 3.62s p=0.682 n=6
Total Time 12.93s (± 0.36%) 12.94s (± 0.17%) ~ 12.90s 12.96s p=0.570 n=6
material-ui - node (v18.15.0, x64)
Memory used 511,320k (± 0.00%) 511,321k (± 0.01%) ~ 511,286k 511,380k p=0.748 n=6
Parse Time 2.65s (± 0.69%) 2.66s (± 0.24%) ~ 2.65s 2.67s p=0.295 n=6
Bind Time 0.99s (± 0.41%) 1.00s (± 1.26%) ~ 0.98s 1.02s p=0.101 n=6
Check Time 17.23s (± 0.31%) 17.24s (± 0.22%) ~ 17.20s 17.30s p=0.630 n=6
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) ~ 0.00s 0.00s p=1.000 n=6
Total Time 20.87s (± 0.33%) 20.90s (± 0.19%) ~ 20.86s 20.96s p=0.469 n=6
mui-docs - node (v18.15.0, x64)
Memory used 1,694,776k (± 0.00%) 1,694,756k (± 0.00%) ~ 1,694,725k 1,694,811k p=0.173 n=6
Parse Time 6.53s (± 0.23%) 6.53s (± 0.38%) ~ 6.49s 6.56s p=0.935 n=6
Bind Time 2.36s (± 0.56%) 2.30s (± 6.60%) ~ 1.99s 2.37s p=0.804 n=6
Check Time 55.27s (± 0.60%) 55.06s (± 0.34%) ~ 54.75s 55.33s p=0.297 n=6
Emit Time 0.16s (± 3.16%) 0.16s (± 0.00%) ~ 0.16s 0.16s p=0.174 n=6
Total Time 64.32s (± 0.54%) 64.05s (± 0.37%) ~ 63.75s 64.40s p=0.173 n=6
self-build-src - node (v18.15.0, x64)
Memory used 2,413,033k (± 0.03%) 2,412,993k (± 0.02%) ~ 2,412,432k 2,413,796k p=1.000 n=6
Parse Time 4.94s (± 1.32%) 4.91s (± 0.66%) ~ 4.87s 4.95s p=0.378 n=6
Bind Time 1.89s (± 0.93%) 1.87s (± 0.87%) ~ 1.85s 1.89s p=0.279 n=6
Check Time 33.41s (± 0.22%) 33.42s (± 0.23%) ~ 33.35s 33.55s p=0.747 n=6
Emit Time 2.67s (± 1.02%) 2.68s (± 1.26%) ~ 2.65s 2.74s p=0.748 n=6
Total Time 42.93s (± 0.14%) 42.92s (± 0.20%) ~ 42.84s 43.04s p=0.471 n=6
self-compiler - node (v18.15.0, x64)
Memory used 419,755k (± 0.01%) 419,753k (± 0.01%) ~ 419,716k 419,789k p=1.000 n=6
Parse Time 2.71s (± 2.87%) 2.73s (± 2.96%) ~ 2.66s 2.84s p=0.406 n=6
Bind Time 1.17s (± 6.11%) 1.17s (± 6.41%) ~ 1.07s 1.23s p=1.000 n=6
Check Time 15.12s (± 0.32%) 15.13s (± 0.28%) ~ 15.09s 15.19s p=0.629 n=6
Emit Time 1.14s (± 1.29%) 1.15s (± 0.65%) ~ 1.14s 1.16s p=0.300 n=6
Total Time 20.14s (± 0.25%) 20.18s (± 0.23%) ~ 20.13s 20.25s p=0.199 n=6
vscode - node (v18.15.0, x64)
Memory used 2,808,667k (± 0.00%) 2,808,716k (± 0.00%) +49k (+ 0.00%) 2,808,663k 2,808,762k p=0.013 n=6
Parse Time 10.63s (± 0.41%) 10.64s (± 0.38%) ~ 10.60s 10.71s p=1.000 n=6
Bind Time 3.39s (± 0.15%) 3.42s (± 0.75%) +0.03s (+ 0.89%) 3.39s 3.46s p=0.020 n=6
Check Time 59.55s (± 0.45%) 59.87s (± 0.58%) ~ 59.60s 60.41s p=0.230 n=6
Emit Time 16.17s (± 0.55%) 16.16s (± 0.35%) ~ 16.06s 16.23s p=0.422 n=6
Total Time 89.75s (± 0.34%) 90.08s (± 0.43%) ~ 89.71s 90.71s p=0.065 n=6
webpack - node (v18.15.0, x64)
Memory used 392,583k (± 0.02%) 392,614k (± 0.02%) ~ 392,526k 392,684k p=0.471 n=6
Parse Time 3.06s (± 0.89%) 3.05s (± 0.34%) ~ 3.03s 3.06s p=0.164 n=6
Bind Time 1.39s (± 0.71%) 1.41s (± 0.75%) ~ 1.39s 1.42s p=0.066 n=6
Check Time 13.93s (± 0.19%) 13.97s (± 0.47%) ~ 13.91s 14.07s p=0.374 n=6
Emit Time 0.00s (± 0.00%) 0.00s (±244.70%) ~ 0.00s 0.01s p=0.405 n=6
Total Time 18.38s (± 0.15%) 18.43s (± 0.36%) ~ 18.37s 18.52s p=0.294 n=6
xstate - node (v18.15.0, x64)
Memory used 513,403k (± 0.01%) 513,414k (± 0.01%) ~ 513,359k 513,535k p=1.000 n=6
Parse Time 3.28s (± 0.42%) 3.29s (± 0.25%) ~ 3.28s 3.30s p=0.121 n=6
Bind Time 1.54s (± 0.26%) 1.54s (± 0.49%) ~ 1.53s 1.55s p=1.000 n=6
Check Time 2.85s (± 0.44%) 2.87s (± 0.65%) ~ 2.84s 2.89s p=0.141 n=6
Emit Time 0.08s (± 0.00%) 0.08s (± 4.99%) ~ 0.08s 0.09s p=0.405 n=6
Total Time 7.75s (± 0.24%) 7.77s (± 0.30%) ~ 7.74s 7.80s p=0.168 n=6
System info unknown
Hosts
  • node (v18.15.0, x64)
Scenarios
  • Angular - node (v18.15.0, x64)
  • Compiler-Unions - node (v18.15.0, x64)
  • Monaco - node (v18.15.0, x64)
  • TFS - node (v18.15.0, x64)
  • material-ui - node (v18.15.0, x64)
  • mui-docs - node (v18.15.0, x64)
  • self-build-src - node (v18.15.0, x64)
  • self-compiler - node (v18.15.0, x64)
  • vscode - node (v18.15.0, x64)
  • webpack - node (v18.15.0, x64)
  • xstate - node (v18.15.0, x64)
Benchmark Name Iterations
Current pr 6
Baseline baseline 6

Developer Information:

Download Benchmarks

@typescript-bot
Copy link
Collaborator

Hey @ahejlsberg, the results of running the DT tests are ready.
Everything looks the same!
You can check the log here.

@typescript-bot
Copy link
Collaborator

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

Everything looks good!

@ahejlsberg
Copy link
Member Author

@typescript-bot test top200

@typescript-bot
Copy link
Collaborator

typescript-bot commented Jan 27, 2024

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

Update: The results are in!

@typescript-bot
Copy link
Collaborator

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

Everything looks good!

@@ -6125,6 +6125,8 @@ export const enum TypeFlags {
NonPrimitive = 1 << 26, // intrinsic object type
TemplateLiteral = 1 << 27, // Template literal type
StringMapping = 1 << 28, // Uppercase/Lowercase type
/** @internal */
Reserved1 = 1 << 29, // Used by union/intersection type construction
Copy link
Member

Choose a reason for hiding this comment

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

This is kind of funky - I'd just directly make this IncludesConstrainedTypeVariable.

@DanielRosenwasser
Copy link
Member

@typescript-bot test this

@DanielRosenwasser DanielRosenwasser merged commit 36f9e9e into main Jan 28, 2024
19 checks passed
@DanielRosenwasser DanielRosenwasser deleted the fix57192 branch January 28, 2024 10:10
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.

Inconsistent intersections of string literal types and pattern string mapping types
3 participants