Enforce simple reactive function call rules
Summary:
Enforce the reactivity rules for function calls between rx, rx-shallow,
rx-local and non-rx functions. RxEnforceCalls option can be used to control the
enforcement (0 = off, 1 = warning, 2 = exception).
Limitations:
Conditional reactivity is not tracked yet, so we pretend every conditionally
reactive caller is non-reactive and every conditionally reactive callee is as
reactive as possible. This is needed to prevent spurious warnings/exceptions
before conditional reactivity is implemented.
Calls that reenter VM are another known source of enforcement holes not
addressed by this diff.
Usage of Rx\IS_ENABLED is not tracked yet either and this is a known source
of spurious warnings.
Rx-incompatible callee may get folded by hhbbc, skipping rx check. The
next diff fixes this.
Reviewed By: markw65
Differential Revision:
D10443336
fbshipit-source-id:
869e1c796ab6b6be7cdfeae979e80c6f91852ec4