mirror of
https://github.com/facebook/react.git
synced 2026-02-24 04:33:04 +00:00
The error transform works by replacing calls to `invariant` with an `if` statement. Since we're replacing a call expression with a statement, Babel wraps the new statement in an immediately-invoked function expression (IIFE). This wrapper is unnecessary in practice because our `invariant` calls are always part of their own expression statement. In the production bundle, the function wrappers are removed by Closure. But they remain in the development bundles. This commit updates the transform to confirm that an `invariant` call expression's parent node is an expression statement. (If not, it throws a transform error.) Then, it replaces the expression statement instead of the expression itself, effectively removing the extraneous IIFE wrapper.