Ban this:: in is/as
Summary:
It is possible to hide generics from Type_test_hint_check with late static bound type constants.
```
class A {}
class B<T> {}
abstract class X {
abstract type const T as A;
public function f(): void {
$a = new B<int>();
if ($a is this::T) {}
}
}
class Y extends X {
const type T = B<int>;
}
```
Until type constants can be annotated with `<<__Enforceable>>`, the type checker will ban all usages of `this::T` in is/as expressions.
Reviewed By: oulgen
Differential Revision:
D13951532
fbshipit-source-id:
db379e13b77b9474cd4513d1f53ee67dcdaa09bf