Expressions And Operators: Invariant

This intrinsic function behaves like a function with a void return type. It is intended to indicate a programmer error for a condition that should never occur. For example:

invariant($obj is B, "Object must have type B");
invariant(!$p is null, "Value can't be null");
$max = 100;
invariant(!$p is null && $p <= $max, "\$p's value %d must be <= %d", $p, $max);

If the first argument value tests true, the program continues execution; otherwise, the library function invariant_violation is called. That function does not return; instead, it either throws an exception of type \HH\InvariantException, or calls the handler previously registered by the library function invariant_callback_register.

The first argument is a boolean expression. The second argument is a string that can contain text and/or optional formatting information as understood by the library function Str\format. The optional comma-separated list of values following the string must match the set of types expected by the optional formatting information inside that string.