Home / Function/ transformTerminal() — react Function Reference

transformTerminal() — react Function Reference

Architecture documentation for the transformTerminal() function in PropagateEarlyReturns.ts from the react codebase.

Entity Profile

Dependency Diagram

graph TD
  7c4a8c4f_1fe5_f001_a91f_cb85243c13e8["transformTerminal()"]
  bf2c5ad7_6533_e158_24c8_7c2ada4951ad["Transform"]
  7c4a8c4f_1fe5_f001_a91f_cb85243c13e8 -->|defined in| bf2c5ad7_6533_e158_24c8_7c2ada4951ad
  54a12a3d_a635_8222_98f7_9dbb45563754["transformTerminal()"]
  7c4a8c4f_1fe5_f001_a91f_cb85243c13e8 -->|calls| 54a12a3d_a635_8222_98f7_9dbb45563754
  49446ae1_b830_9411_8258_1139d21b314b["createTemporaryPlace()"]
  7c4a8c4f_1fe5_f001_a91f_cb85243c13e8 -->|calls| 49446ae1_b830_9411_8258_1139d21b314b
  50f3d941_f0f5_a432_b09a_ae83726a516f["traverseTerminal()"]
  7c4a8c4f_1fe5_f001_a91f_cb85243c13e8 -->|calls| 50f3d941_f0f5_a432_b09a_ae83726a516f
  style 7c4a8c4f_1fe5_f001_a91f_cb85243c13e8 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

compiler/packages/babel-plugin-react-compiler/src/ReactiveScopes/PropagateEarlyReturns.ts lines 274–336

  override transformTerminal(
    stmt: ReactiveTerminalStatement,
    state: State,
  ): Transformed<ReactiveStatement> {
    if (state.withinReactiveScope && stmt.terminal.kind === 'return') {
      const loc = stmt.terminal.value.loc;
      let earlyReturnValue: ReactiveScope['earlyReturnValue'];
      if (state.earlyReturnValue !== null) {
        earlyReturnValue = state.earlyReturnValue;
      } else {
        const identifier = createTemporaryPlace(this.env, loc).identifier;
        promoteTemporary(identifier);
        earlyReturnValue = {
          label: this.env.nextBlockId,
          loc,
          value: identifier,
        };
      }
      state.earlyReturnValue = earlyReturnValue;
      return {
        kind: 'replace-many',
        value: [
          {
            kind: 'instruction',
            instruction: {
              id: makeInstructionId(0),
              loc,
              lvalue: null,
              value: {
                kind: 'StoreLocal',
                loc,
                type: null,
                lvalue: {
                  kind: InstructionKind.Reassign,
                  place: {
                    kind: 'Identifier',
                    identifier: earlyReturnValue.value,
                    effect: Effect.Capture,
                    loc,
                    reactive: true,
                  },
                },
                value: stmt.terminal.value,
              },
            },
          },
          {
            kind: 'terminal',
            label: null,
            terminal: {
              kind: 'break',
              id: makeInstructionId(0),
              loc,
              targetKind: 'labeled',
              target: earlyReturnValue.label,
            },
          },
        ],
      };
    }
    this.traverseTerminal(stmt, state);
    return {kind: 'keep'};
  }

Domain

Subdomains

Frequently Asked Questions

What does transformTerminal() do?
transformTerminal() is a function in the react codebase, defined in compiler/packages/babel-plugin-react-compiler/src/ReactiveScopes/PropagateEarlyReturns.ts.
Where is transformTerminal() defined?
transformTerminal() is defined in compiler/packages/babel-plugin-react-compiler/src/ReactiveScopes/PropagateEarlyReturns.ts at line 274.
What does transformTerminal() call?
transformTerminal() calls 3 function(s): createTemporaryPlace, transformTerminal, traverseTerminal.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free