CARVIEW |
Select Language
HTTP/2 200
date: Sat, 19 Jul 2025 15:49:06 GMT
content-type: text/html; charset=utf-8
vary: X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With,Accept-Encoding, Accept, X-Requested-With
x-repository-download: git clone https://github.com/facebook/flow.git
etag: W/"2b9723f8fad2f604c058b92500ff3519"
cache-control: max-age=0, private, must-revalidate
strict-transport-security: max-age=31536000; includeSubdomains; preload
x-frame-options: deny
x-content-type-options: nosniff
x-xss-protection: 0
referrer-policy: no-referrer-when-downgrade
content-security-policy: default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com *.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com proxy.individual.githubcopilot.com proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com api.githubcopilot.com api.individual.githubcopilot.com api.business.githubcopilot.com api.enterprise.githubcopilot.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com private-avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com release-assets.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com copilotprodattachments.blob.core.windows.net/github-production-copilot-attachments/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/
server: github.com
content-encoding: gzip
accept-ranges: bytes
set-cookie: _gh_sess=S75JGkpFk2iWl5Oph9KKstOlaQJxEEz%2BU1cciwrosv9H9y8x0uEVLCQTICH07HdPsKk9ZgPBf2EQwx85W%2BcNQZCwRpeg0KfPUcumhdrzKCD719BmI1M%2F%2FUf7fsG5mdN%2Fz1QMdXe4trW6%2B%2BxcM%2FU%2BruSXTZRjD6mv5Yytn7VyVyeR8Ev%2BTJgFse%2F75Pwne6UL7FNl%2BynjsmgCa1edYhwsnLs5xHNWFm2k4nSdqeLM7q9bHhKpaW7WcsyGBcrCG3umyV25bUOSFwuskZJa5SpFCQ%3D%3D--30aHuMsi%2BiVnBW7J--crqD6WuCripsIx6WOzq%2Fgw%3D%3D; Path=/; HttpOnly; Secure; SameSite=Lax
set-cookie: _octo=GH1.1.402721432.1752940145; Path=/; Domain=github.com; Expires=Sun, 19 Jul 2026 15:49:05 GMT; Secure; SameSite=Lax
set-cookie: logged_in=no; Path=/; Domain=github.com; Expires=Sun, 19 Jul 2026 15:49:05 GMT; HttpOnly; Secure; SameSite=Lax
x-github-request-id: DA30:20F01E:63C27B:7CF1D6:687BBE71
[parser] Add parser support for _ in constructors and calls · facebook/flow@fb23b93 · GitHub
Copy file name to clipboardExpand all lines: src/parser/estree_translator.ml
Copy file name to clipboardExpand all lines: src/parser/expression_parser.ml
Copy file name to clipboard
Copy file name to clipboard
Copy file name to clipboard
Copy file name to clipboard
Skip to content
Navigation Menu
{{ message }}
-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Commit fb23b93
[parser] Add parser support for _ in constructors and calls
Summary:
This diff adds support for parsing `_`, which will be used to specify that a type parameter should be implicitly instantiated.
We add a new ast node to the Expression module, `TypeParameterInstantiation`. This is reminiscent of `Type`'s `ParameterInstantiation`, except that instead of a list of `Type.t`s, it contains a list of `Implicit of Loc.t | Explicit of Type.t`. When parsing `New` and `Call` type arguments, we parse `_` as an `Implicit` and all other types `t` as `Explicit t`.
Creating the new ast node comes with a number of benefits:
1. External consumers of our AST currently consume `ParameterInstantiation` as it was originally designed: for type arguments to polymorphic types. Creating a new AST node makes sure we don't need to update all of those external consumers.
2. This new AST node allows OCaml to enforce the invariant that `_` can only appear in `Call` and `New`.
3. Related to 2., this more faithfully models the structure of our AST. `Call` and `New` have type arguments, but the fact that we used the same representation as we did for `Type` was just because they happened to have the same internal representation. These types are types we come across when parsing an expression, not a type annotation.
We also now say that `_` is a reserved keyword when it's found in type positions, so it cannot be used unless it means implicit instantiation.
We need to update babel to consider "_" to be a reserved identifier in type positions and to parse `_` as an `ImplicitInstantiationAnnotation`.
Reviewed By: samwgoldman
Differential Revision: D10105957
fbshipit-source-id: 3003b0cadbb1f9163a07bae1957710e9fbdeccdd1 parent d2b32ea commit fb23b93Copy full SHA for fb23b93
File tree
Expand file treeCollapse file tree
28 files changed
+887
-27
lines changedFilter options
- src
- parser_utils
- output
- parser
- test/flow/types/annotations
- typing
- __tests__
- tests
- implicit_instantiation
- type-destructors
Expand file treeCollapse file tree
28 files changed
+887
-27
lines changedsrc/parser/estree_translator.ml
Copy file name to clipboardExpand all lines: src/parser/estree_translator.ml+14-2Lines changed: 14 additions & 2 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
450 | 450 |
| |
451 | 451 |
| |
452 | 452 |
| |
453 |
| - | |
| 453 | + | |
454 | 454 |
| |
455 | 455 |
| |
456 | 456 |
| |
| |||
1030 | 1030 |
| |
1031 | 1031 |
| |
1032 | 1032 |
| |
| 1033 | + | |
| 1034 | + | |
| 1035 | + | |
| 1036 | + | |
| 1037 | + | |
| 1038 | + | |
| 1039 | + | |
1033 | 1040 |
| |
1034 | 1041 |
| |
1035 | 1042 |
| |
| |||
1273 | 1280 |
| |
1274 | 1281 |
| |
1275 | 1282 |
| |
| 1283 | + | |
| 1284 | + | |
| 1285 | + | |
| 1286 | + | |
| 1287 | + | |
1276 | 1288 |
| |
1277 | 1289 |
| |
1278 | 1290 |
| |
| |||
1458 | 1470 |
| |
1459 | 1471 |
| |
1460 | 1472 |
| |
1461 |
| - | |
| 1473 | + | |
1462 | 1474 |
| |
1463 | 1475 |
| |
1464 | 1476 |
| |
|
src/parser/expression_parser.ml
Copy file name to clipboardExpand all lines: src/parser/expression_parser.ml+31-2Lines changed: 31 additions & 2 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
572 | 572 |
| |
573 | 573 |
| |
574 | 574 |
| |
575 |
| - | |
| 575 | + | |
576 | 576 |
| |
577 | 577 |
| |
578 | 578 |
| |
| |||
622 | 622 |
| |
623 | 623 |
| |
624 | 624 |
| |
625 |
| - | |
| 625 | + | |
626 | 626 |
| |
627 | 627 |
| |
628 | 628 |
| |
| |||
637 | 637 |
| |
638 | 638 |
| |
639 | 639 |
| |
| 640 | + | |
| 641 | + | |
| 642 | + | |
| 643 | + | |
| 644 | + | |
| 645 | + | |
| 646 | + | |
| 647 | + | |
| 648 | + | |
| 649 | + | |
| 650 | + | |
| 651 | + | |
| 652 | + | |
| 653 | + | |
| 654 | + | |
| 655 | + | |
| 656 | + | |
| 657 | + | |
| 658 | + | |
| 659 | + | |
| 660 | + | |
| 661 | + | |
| 662 | + | |
| 663 | + | |
| 664 | + | |
| 665 | + | |
| 666 | + | |
| 667 | + | |
| 668 | + | |
640 | 669 |
| |
641 | 670 |
| |
642 | 671 |
| |
|
+11-2Lines changed: 11 additions & 2 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
249 | 249 |
| |
250 | 250 |
| |
251 | 251 |
| |
| 252 | + | |
252 | 253 |
| |
253 | 254 |
| |
254 | 255 |
| |
| |||
627 | 628 |
| |
628 | 629 |
| |
629 | 630 |
| |
| 631 | + | |
| 632 | + | |
| 633 | + | |
| 634 | + | |
| 635 | + | |
| 636 | + | |
| 637 | + | |
| 638 | + | |
630 | 639 |
| |
631 | 640 |
| |
632 | 641 |
| |
| |||
838 | 847 |
| |
839 | 848 |
| |
840 | 849 |
| |
841 |
| - | |
| 850 | + | |
842 | 851 |
| |
843 | 852 |
| |
844 | 853 |
| |
845 | 854 |
| |
846 | 855 |
| |
847 | 856 |
| |
848 | 857 |
| |
849 |
| - | |
| 858 | + | |
850 | 859 |
| |
851 | 860 |
| |
852 | 861 |
| |
|
+1-1Lines changed: 1 addition & 1 deletion
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
440 | 440 |
| |
441 | 441 |
| |
442 | 442 |
| |
443 |
| - | |
| 443 | + | |
444 | 444 |
| |
445 | 445 |
| |
446 | 446 |
| |
|
src/parser/test/flow/types/annotations/underscore_is_allowed_trailing_commas.js
Copy file name to clipboard+7Lines changed: 7 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + |
src/parser/test/flow/types/annotations/underscore_is_allowed_trailing_commas.tree.json
Copy file name to clipboard+96Lines changed: 96 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + |
src/parser/test/flow/types/annotations/underscore_is_implicit_anywhere_in_list.js
Copy file name to clipboard+1Lines changed: 1 addition & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
| 1 | + |
src/parser/test/flow/types/annotations/underscore_is_implicit_anywhere_in_list.tree.json
Copy file name to clipboard+143Lines changed: 143 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + |
You can’t perform that action at this time.
0 commit comments