Hack prefers "super" to "as" constraints on type parameters, and should not
Summary:
A function with signature
```
Foo<Tu, Tv super Tu>(...)
```
should behave the same way as
```
Foo<Tu as Tv, Tv>(...)
```
But in the example in the task, the former works but the latter fails when invoked.
The root cause was an asymmetry in the handling of constraints in typing_generic_constraint, where the subtype was passed in as pre-expanded
in the SUPER case but not expanded (i.e. as a type variable) in the AS case. The fix is to pass in the subtype as pre-expanded in both cases.
Reviewed By: dlreeves
Differential Revision:
D3406590
fbshipit-source-id:
00338ada14bed9736e46d5a786fcb53b7b7c88a8