Skip to content

Do not reset control flow analysis on index signatures - #48427

Merged
Wesley Wigham (weswigham) merged 2 commits into
microsoft:mainfrom
jihndai:issue48307
Apr 7, 2022
Merged

Wesley Wigham (weswigham) merged 2 commits into
microsoft:mainfrom
jihndai:issue48307

Conversation

@jihndai

@jihndai jihndai (jihndai) commented Mar 25, 2022 •

Copy link
Copy Markdown
Contributor

Fixes #48307

IndexSignature nodes start a new control flow during binding, which leads to any narrowing done by previous control flow analysis to be lost for its children nodes. To avoid initializing a new control flow in IndexSignature nodes, we stop associating the IsControlFlowContainer flag to IndexSignature nodes, as there doesn't seem to be an active use case for this.

Another change made along the way but is unrelated to the bug, was to disassociate the IsFunctionLike flag from IndexSignature nodes, as it didn't seem to be doing anything useful and seemed out of place. However, I'm not fully sure if this flag served a purpose here or not (as all the tests passed with or without it). If anyone knows why IndexSignature nodes were associated with the IsFunctionLike flag, please feel free to update me on it.

@typescript-bot TypeScript Bot (typescript-bot) added the For Backlog Bug PRs that fix a backlog bug label Mar 25, 2022
@jakebailey

Copy link
Copy Markdown
Member

TypeScript Bot (@typescript-bot) user test this inline
TypeScript Bot (@typescript-bot) perf test this

@typescript-bot

TypeScript Bot (typescript-bot) commented Apr 6, 2022 •

Copy link
Copy Markdown
Contributor

Heya Jake Bailey (@jakebailey), I've started to run the perf test suite on this PR at 842f267. You can monitor the build here.

Update: The results are in!

@typescript-bot

TypeScript Bot (typescript-bot) commented Apr 6, 2022 •

Copy link
Copy Markdown
Contributor

Heya Jake Bailey (@jakebailey), I've started to run the diff-based community code test suite on this PR at 842f267. You can monitor the build here.

Update: The results are in!

@typescript-bot

Copy link
Copy Markdown
Contributor

Jake Bailey (@jakebailey)
Great news! no new errors were found between main..refs/pull/48427/merge

@typescript-bot

Copy link
Copy Markdown
Contributor

Jake Bailey (@jakebailey)
The results of the perf run you requested are in!

Here they are:

Comparison Report - main..48427

Metric main 48427 Delta Best Worst
Angular - node (v10.16.3, x64)
Memory used 357,342k (± 0.02%) 357,312k (± 0.02%) -30k (- 0.01%) 357,180k 357,475k
Parse Time 2.06s (± 0.62%) 2.06s (± 0.47%) -0.00s (- 0.10%) 2.04s 2.08s
Bind Time 0.86s (± 1.01%) 0.86s (± 1.14%) +0.00s (+ 0.47%) 0.85s 0.89s
Check Time 5.84s (± 0.36%) 5.84s (± 0.59%) -0.00s (- 0.05%) 5.77s 5.93s
Emit Time 5.98s (± 0.47%) 5.98s (± 0.34%) +0.00s (+ 0.07%) 5.94s 6.05s
Total Time 14.74s (± 0.30%) 14.74s (± 0.42%) -0.00s (- 0.01%) 14.62s 14.93s
Compiler-Unions - node (v10.16.3, x64)
Memory used 205,905k (± 0.05%) 205,897k (± 0.03%) -7k (- 0.00%) 205,760k 206,024k
Parse Time 0.84s (± 0.43%) 0.85s (± 0.68%) +0.00s (+ 0.36%) 0.83s 0.86s
Bind Time 0.51s (± 0.71%) 0.52s (± 0.66%) +0.00s (+ 0.58%) 0.51s 0.52s
Check Time 7.94s (± 0.71%) 7.94s (± 0.65%) -0.00s (- 0.01%) 7.81s 8.02s
Emit Time 2.48s (± 0.70%) 2.52s (± 0.94%) +0.04s (+ 1.53%) 2.47s 2.57s
Total Time 11.78s (± 0.65%) 11.82s (± 0.56%) +0.04s (+ 0.37%) 11.68s 11.93s
Monaco - node (v10.16.3, x64)
Memory used 343,719k (± 0.01%) 343,713k (± 0.02%) -6k (- 0.00%) 343,603k 343,813k
Parse Time 1.58s (± 0.63%) 1.57s (± 0.43%) -0.01s (- 0.32%) 1.56s 1.59s
Bind Time 0.76s (± 0.39%) 0.76s (± 0.63%) -0.00s (- 0.66%) 0.75s 0.77s
Check Time 5.78s (± 0.51%) 5.79s (± 0.35%) +0.02s (+ 0.29%) 5.76s 5.83s
Emit Time 3.24s (± 0.97%) 3.21s (± 0.79%) -0.03s (- 0.86%) 3.17s 3.30s
Total Time 11.36s (± 0.33%) 11.34s (± 0.19%) -0.02s (- 0.18%) 11.28s 11.39s
TFS - node (v10.16.3, x64)
Memory used 305,349k (± 0.03%) 305,406k (± 0.02%) +58k (+ 0.02%) 305,234k 305,603k
Parse Time 1.29s (± 0.54%) 1.30s (± 0.78%) +0.01s (+ 0.54%) 1.28s 1.32s
Bind Time 0.72s (± 0.77%) 0.72s (± 0.86%) +0.00s (+ 0.14%) 0.71s 0.73s
Check Time 5.23s (± 0.42%) 5.23s (± 0.42%) -0.00s (- 0.04%) 5.17s 5.27s
Emit Time 3.39s (± 0.81%) 3.42s (± 1.52%) +0.03s (+ 0.74%) 3.30s 3.53s
Total Time 10.63s (± 0.29%) 10.66s (± 0.61%) +0.03s (+ 0.26%) 10.51s 10.81s
material-ui - node (v10.16.3, x64)
Memory used 470,451k (± 0.01%) 470,442k (± 0.02%) -10k (- 0.00%) 470,234k 470,647k
Parse Time 1.82s (± 0.38%) 1.82s (± 0.48%) -0.01s (- 0.38%) 1.81s 1.85s
Bind Time 0.67s (± 0.54%) 0.67s (± 0.71%) -0.00s (- 0.15%) 0.66s 0.68s
Check Time 14.28s (± 0.66%) 14.31s (± 0.92%) +0.03s (+ 0.22%) 14.11s 14.63s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 16.78s (± 0.60%) 16.81s (± 0.78%) +0.02s (+ 0.14%) 16.60s 17.11s
xstate - node (v10.16.3, x64)
Memory used 572,568k (± 0.01%) 572,460k (± 0.01%) -109k (- 0.02%) 572,254k 572,600k
Parse Time 2.59s (± 0.31%) 2.59s (± 0.41%) +0.00s (+ 0.00%) 2.56s 2.61s
Bind Time 1.01s (± 0.64%) 1.01s (± 0.58%) -0.01s (- 0.49%) 0.99s 1.02s
Check Time 1.52s (± 0.33%) 1.53s (± 0.49%) +0.00s (+ 0.13%) 1.51s 1.54s
Emit Time 0.07s (± 0.00%) 0.07s (± 0.00%) 0.00s ( 0.00%) 0.07s 0.07s
Total Time 5.19s (± 0.23%) 5.19s (± 0.30%) -0.00s (- 0.02%) 5.15s 5.22s
Angular - node (v12.1.0, x64)
Memory used 334,763k (± 0.14%) 335,032k (± 0.02%) +269k (+ 0.08%) 334,872k 335,137k
Parse Time 2.07s (± 0.98%) 2.07s (± 0.39%) +0.00s (+ 0.14%) 2.05s 2.09s
Bind Time 0.83s (± 0.57%) 0.84s (± 1.08%) +0.01s (+ 1.33%) 0.83s 0.87s
Check Time 5.69s (± 0.75%) 5.68s (± 0.45%) -0.02s (- 0.30%) 5.60s 5.72s
Emit Time 6.25s (± 0.61%) 6.22s (± 0.48%) -0.03s (- 0.48%) 6.16s 6.29s
Total Time 14.85s (± 0.47%) 14.81s (± 0.35%) -0.04s (- 0.24%) 14.67s 14.92s
Compiler-Unions - node (v12.1.0, x64)
Memory used 193,241k (± 0.12%) 193,302k (± 0.11%) +62k (+ 0.03%) 192,827k 193,642k
Parse Time 0.84s (± 1.25%) 0.84s (± 0.90%) +0.00s (+ 0.24%) 0.83s 0.86s
Bind Time 0.53s (± 0.89%) 0.53s (± 1.04%) -0.00s (- 0.19%) 0.52s 0.54s
Check Time 7.43s (± 0.76%) 7.41s (± 0.53%) -0.02s (- 0.22%) 7.31s 7.50s
Emit Time 2.54s (± 1.29%) 2.55s (± 0.87%) +0.01s (+ 0.39%) 2.50s 2.58s
Total Time 11.34s (± 0.79%) 11.33s (± 0.51%) -0.00s (- 0.04%) 11.20s 11.48s
Monaco - node (v12.1.0, x64)
Memory used 326,742k (± 0.01%) 326,706k (± 0.01%) -36k (- 0.01%) 326,602k 326,768k
Parse Time 1.55s (± 0.44%) 1.56s (± 0.74%) +0.01s (+ 0.78%) 1.54s 1.59s
Bind Time 0.74s (± 0.75%) 0.74s (± 1.35%) +0.00s (+ 0.27%) 0.72s 0.77s
Check Time 5.63s (± 0.53%) 5.65s (± 0.50%) +0.03s (+ 0.46%) 5.57s 5.71s
Emit Time 3.27s (± 1.44%) 3.26s (± 0.71%) -0.01s (- 0.43%) 3.18s 3.29s
Total Time 11.18s (± 0.64%) 11.21s (± 0.47%) +0.03s (+ 0.23%) 11.05s 11.29s
TFS - node (v12.1.0, x64)
Memory used 289,994k (± 0.02%) 290,009k (± 0.02%) +14k (+ 0.00%) 289,896k 290,140k
Parse Time 1.30s (± 0.57%) 1.31s (± 0.61%) +0.01s (+ 0.69%) 1.29s 1.33s
Bind Time 0.70s (± 0.32%) 0.70s (± 0.68%) -0.00s (- 0.57%) 0.69s 0.71s
Check Time 5.20s (± 0.47%) 5.20s (± 0.43%) -0.01s (- 0.12%) 5.16s 5.26s
Emit Time 3.47s (± 0.67%) 3.49s (± 0.58%) +0.02s (+ 0.55%) 3.44s 3.53s
Total Time 10.68s (± 0.43%) 10.69s (± 0.35%) +0.01s (+ 0.12%) 10.60s 10.77s
material-ui - node (v12.1.0, x64)
Memory used 449,204k (± 0.08%) 449,451k (± 0.01%) +247k (+ 0.06%) 449,286k 449,597k
Parse Time 1.82s (± 0.42%) 1.83s (± 0.59%) +0.01s (+ 0.33%) 1.81s 1.85s
Bind Time 0.66s (± 0.91%) 0.66s (± 0.88%) +0.00s (+ 0.31%) 0.65s 0.67s
Check Time 12.96s (± 0.88%) 13.00s (± 0.63%) +0.04s (+ 0.29%) 12.87s 13.21s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 15.44s (± 0.77%) 15.49s (± 0.58%) +0.05s (+ 0.30%) 15.35s 15.72s
xstate - node (v12.1.0, x64)
Memory used 538,067k (± 0.01%) 538,071k (± 0.02%) +5k (+ 0.00%) 537,845k 538,276k
Parse Time 2.52s (± 0.35%) 2.53s (± 0.59%) +0.01s (+ 0.32%) 2.51s 2.57s
Bind Time 1.04s (± 0.46%) 1.04s (± 0.70%) +0.00s (+ 0.48%) 1.03s 1.06s
Check Time 1.47s (± 0.64%) 1.48s (± 0.49%) +0.01s (+ 0.75%) 1.46s 1.49s
Emit Time 0.07s (± 0.00%) 0.07s (± 0.00%) 0.00s ( 0.00%) 0.07s 0.07s
Total Time 5.10s (± 0.27%) 5.12s (± 0.34%) +0.02s (+ 0.35%) 5.09s 5.17s
Angular - node (v14.15.1, x64)
Memory used 333,273k (± 0.01%) 333,255k (± 0.00%) -17k (- 0.01%) 333,216k 333,291k
Parse Time 2.03s (± 0.52%) 2.04s (± 0.48%) +0.00s (+ 0.15%) 2.02s 2.06s
Bind Time 0.88s (± 0.51%) 0.88s (± 0.66%) -0.00s (- 0.11%) 0.87s 0.89s
Check Time 5.63s (± 0.47%) 5.62s (± 0.38%) -0.01s (- 0.16%) 5.57s 5.66s
Emit Time 6.30s (± 0.53%) 6.34s (± 0.84%) +0.04s (+ 0.63%) 6.23s 6.43s
Total Time 14.84s (± 0.41%) 14.88s (± 0.41%) +0.04s (+ 0.25%) 14.75s 14.97s
Compiler-Unions - node (v14.15.1, x64)
Memory used 194,024k (± 0.65%) 193,456k (± 0.60%) -568k (- 0.29%) 192,083k 195,435k
Parse Time 0.85s (± 0.70%) 0.86s (± 0.69%) +0.00s (+ 0.12%) 0.85s 0.87s
Bind Time 0.56s (± 0.71%) 0.56s (± 0.60%) +0.00s (+ 0.36%) 0.56s 0.57s
Check Time 7.53s (± 0.79%) 7.53s (± 0.84%) +0.00s (+ 0.01%) 7.39s 7.67s
Emit Time 2.53s (± 0.76%) 2.50s (± 0.67%) -0.02s (- 0.83%) 2.48s 2.55s
Total Time 11.47s (± 0.55%) 11.45s (± 0.60%) -0.01s (- 0.12%) 11.29s 11.61s
Monaco - node (v14.15.1, x64)
Memory used 325,460k (± 0.01%) 325,459k (± 0.01%) -1k (- 0.00%) 325,416k 325,518k
Parse Time 1.58s (± 0.79%) 1.58s (± 0.61%) -0.01s (- 0.51%) 1.56s 1.60s
Bind Time 0.77s (± 0.62%) 0.78s (± 0.44%) +0.00s (+ 0.52%) 0.77s 0.78s
Check Time 5.51s (± 0.55%) 5.52s (± 0.76%) +0.01s (+ 0.11%) 5.45s 5.63s
Emit Time 3.30s (± 0.53%) 3.31s (± 0.66%) +0.00s (+ 0.12%) 3.25s 3.34s
Total Time 11.18s (± 0.47%) 11.18s (± 0.51%) +0.00s (+ 0.04%) 11.09s 11.34s
TFS - node (v14.15.1, x64)
Memory used 289,011k (± 0.01%) 288,998k (± 0.01%) -14k (- 0.00%) 288,932k 289,053k
Parse Time 1.36s (± 0.56%) 1.37s (± 0.89%) +0.01s (+ 0.37%) 1.35s 1.41s
Bind Time 0.72s (± 0.86%) 0.73s (± 0.50%) +0.01s (+ 0.69%) 0.72s 0.73s
Check Time 5.20s (± 0.53%) 5.18s (± 0.27%) -0.02s (- 0.33%) 5.14s 5.22s
Emit Time 3.47s (± 2.46%) 3.51s (± 1.62%) +0.04s (+ 1.09%) 3.39s 3.60s
Total Time 10.76s (± 0.95%) 10.79s (± 0.45%) +0.03s (+ 0.27%) 10.69s 10.87s
material-ui - node (v14.15.1, x64)
Memory used 447,771k (± 0.00%) 447,565k (± 0.08%) -206k (- 0.05%) 446,603k 447,864k
Parse Time 1.87s (± 0.49%) 1.87s (± 0.63%) +0.00s (+ 0.11%) 1.84s 1.89s
Bind Time 0.70s (± 0.64%) 0.69s (± 0.52%) -0.00s (- 0.57%) 0.69s 0.70s
Check Time 12.99s (± 0.43%) 13.02s (± 0.97%) +0.03s (+ 0.26%) 12.83s 13.39s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 15.55s (± 0.36%) 15.59s (± 0.80%) +0.03s (+ 0.22%) 15.41s 15.96s
xstate - node (v14.15.1, x64)
Memory used 535,824k (± 0.00%) 535,792k (± 0.00%) -32k (- 0.01%) 535,755k 535,846k
Parse Time 2.59s (± 0.45%) 2.61s (± 0.61%) +0.02s (+ 0.62%) 2.57s 2.65s
Bind Time 1.16s (± 0.83%) 1.15s (± 0.73%) -0.01s (- 0.52%) 1.13s 1.17s
Check Time 1.49s (± 0.43%) 1.50s (± 0.72%) +0.01s (+ 0.60%) 1.48s 1.52s
Emit Time 0.07s (± 0.00%) 0.07s (± 0.00%) 0.00s ( 0.00%) 0.07s 0.07s
Total Time 5.31s (± 0.36%) 5.33s (± 0.38%) +0.02s (+ 0.34%) 5.29s 5.37s
System
Machine Namets-ci-ubuntu
Platformlinux 4.4.0-210-generic
Architecturex64
Available Memory16 GB
Available Memory3 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 48427 10
Baseline main 10

Developer Information:

Download Benchmark

@weswigham
Wesley Wigham (weswigham) merged commit b18141b into microsoft:main Apr 7, 2022
@microsoft 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

For Backlog Bug PRs that fix a backlog bug

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

typeof ignoring early return when used in object with string keys

5 participants