Simplify supportdyn<t>
commit4523774f3d50c28be88d2ffe630807fe65722a4f
authorAndrew Kennedy <akenn@fb.com>
Tue, 15 Mar 2022 08:49:03 +0000 (15 01:49 -0700)
committerFacebook GitHub Bot <facebook-github-bot@users.noreply.github.com>
Tue, 15 Mar 2022 08:49:03 +0000 (15 01:49 -0700)
tree9e575081e8c36d82496744cee6ec8cef41a4de56
parentac98a590f75c569e1249b6c1145c7512c7bd240e
Simplify supportdyn<t>

Summary:
We're generating a lot of superflous `supportdyn<_>` e.g. when doing indexing on `supportdyn<t>` for an open shape `t`. This is sometimes blocking typing e.g. `foreach` on `~supportdyn<~vec<t>>` fails (under `--pessimise-builtins`).

When constructing `supportdyn<t>`, push `supportdyn` under intersections and unions, and elide it if `t` already supports dynamic.

Reviewed By: francesco-zappa-nardelli

Differential Revision: D34869613

fbshipit-source-id: 9839e75fc2d5b8514b876e78c08306212791b4e6
hphp/hack/src/typing/typing_generic_rules.ml
hphp/hack/src/typing/typing_shapes.ml
hphp/hack/src/typing/typing_utils.ml
hphp/hack/src/typing/typing_utils.mli