Return all types which transitively extend, implement, or use the given
base type, as
(name, path, kind, abstract) tuples
namespace HH\Facts; function transitive_subtypes<T>( classname<T> $base_type, ?DeriveFilters<string, dynamic> $filters = NULL, ): vec<(string, TypeKind, classname<T>, bool)>;
The 'kind' and 'derive_kind' filters passed in determine which relationships
and types we look at while traversing the inheritance graph. So if you
filter traits out, we'll exclude classes which are only related because
use a trait which
implements the interface you passed in.
The 'attributes' filters passed in will be applied to the final list of
transitive subtypes. So if you look for types with the
attribute, we'll only filter the final list of subtypes, instead of ignoring
all types that don't have the given attribute.
Throws InvalidOperationException if Facts is not enabled.
?DeriveFilters<string, dynamic> $filters = NULL
vec<(string, TypeKind, classname<T>, bool)>