Fix pessimised vec/dict assignment
commite234de431e62212d15749d7d493c14ed5b6d0dc5
authorScott Owens <sowens@fb.com>
Mon, 18 Oct 2021 12:01:43 +0000 (18 05:01 -0700)
committerFacebook GitHub Bot <facebook-github-bot@users.noreply.github.com>
Mon, 18 Oct 2021 12:03:48 +0000 (18 05:03 -0700)
tree6cda89ac6d5ffff72b1c6127c2901337a480229a
parent0d169fab24272fb8661e3b4d607362be3adc8142
Fix pessimised vec/dict assignment

Summary:
Pessimised vecs can always store dynamic, it doesn't need to show up in the type parameter. Thus, it `$v : vec<t1>` and `$i : ~t2`, then after `$v[0] = $i`, we should have `$v : t1 | t2`, and not `$v : t1 | ~t2`, as previously.

Also add to the test cases for pessimised vec/dict/Map/Vector.

Reviewed By: vassilmladenov

Differential Revision: D31608494

fbshipit-source-id: 82817933478d3083a53ecb83e9580d5a0c8c84c0
14 files changed:
hphp/hack/src/typing/typing.ml
hphp/hack/src/typing/typing_array_access.ml
hphp/hack/test/sound_dynamic/typing/pessimise_builtins/dict.good.php
hphp/hack/test/sound_dynamic/typing/pessimise_builtins/dict.good.php.exp
hphp/hack/test/sound_dynamic/typing/pessimise_builtins/map.bad.php
hphp/hack/test/sound_dynamic/typing/pessimise_builtins/map.bad.php.exp
hphp/hack/test/sound_dynamic/typing/pessimise_builtins/map.good.php
hphp/hack/test/sound_dynamic/typing/pessimise_builtins/map.good.php.exp
hphp/hack/test/sound_dynamic/typing/pessimise_builtins/vec.good.php
hphp/hack/test/sound_dynamic/typing/pessimise_builtins/vec.good.php.exp
hphp/hack/test/sound_dynamic/typing/pessimise_builtins/vector.bad.php
hphp/hack/test/sound_dynamic/typing/pessimise_builtins/vector.bad.php.exp
hphp/hack/test/sound_dynamic/typing/pessimise_builtins/vector.good.php
hphp/hack/test/sound_dynamic/typing/pessimise_builtins/vector.good.php.exp