Home / Function/ traverseTerminal() — react Function Reference

traverseTerminal() — react Function Reference

Architecture documentation for the traverseTerminal() function in visitors.ts from the react codebase.

Entity Profile

Dependency Diagram

graph TD
  50f3d941_f0f5_a432_b09a_ae83726a516f["traverseTerminal()"]
  af3ace55_db6d_865e_92b9_81486f6af1e7["ReactiveFunctionTransform"]
  50f3d941_f0f5_a432_b09a_ae83726a516f -->|defined in| af3ace55_db6d_865e_92b9_81486f6af1e7
  55773a39_5b37_d0fb_a280_dc321d87f4fb["traverseTerminal()"]
  55773a39_5b37_d0fb_a280_dc321d87f4fb -->|calls| 50f3d941_f0f5_a432_b09a_ae83726a516f
  7c4a8c4f_1fe5_f001_a91f_cb85243c13e8["transformTerminal()"]
  7c4a8c4f_1fe5_f001_a91f_cb85243c13e8 -->|calls| 50f3d941_f0f5_a432_b09a_ae83726a516f
  39ff6a63_fc67_04cf_7655_c9066bab21b8["visitID()"]
  50f3d941_f0f5_a432_b09a_ae83726a516f -->|calls| 39ff6a63_fc67_04cf_7655_c9066bab21b8
  8d96a57b_ca06_9ec9_edd9_0932b6d3bae8["visitPlace()"]
  50f3d941_f0f5_a432_b09a_ae83726a516f -->|calls| 8d96a57b_ca06_9ec9_edd9_0932b6d3bae8
  41f8ce8e_b5b8_2fcb_46ab_0111bb06c2f2["transformValue()"]
  50f3d941_f0f5_a432_b09a_ae83726a516f -->|calls| 41f8ce8e_b5b8_2fcb_46ab_0111bb06c2f2
  108b8884_5432_e93d_5f46_a6634348d340["visitBlock()"]
  50f3d941_f0f5_a432_b09a_ae83726a516f -->|calls| 108b8884_5432_e93d_5f46_a6634348d340
  55773a39_5b37_d0fb_a280_dc321d87f4fb["traverseTerminal()"]
  50f3d941_f0f5_a432_b09a_ae83726a516f -->|calls| 55773a39_5b37_d0fb_a280_dc321d87f4fb
  d7fde76c_4fd9_feb3_299b_798689f05bc6["assertExhaustive()"]
  50f3d941_f0f5_a432_b09a_ae83726a516f -->|calls| d7fde76c_4fd9_feb3_299b_798689f05bc6
  style 50f3d941_f0f5_a432_b09a_ae83726a516f fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

compiler/packages/babel-plugin-react-compiler/src/ReactiveScopes/visitors.ts lines 454–572

  override traverseTerminal(
    stmt: ReactiveTerminalStatement,
    state: TState,
  ): void {
    const {terminal} = stmt;
    if (terminal.id !== null) {
      this.visitID(terminal.id, state);
    }
    switch (terminal.kind) {
      case 'break':
      case 'continue': {
        break;
      }
      case 'return': {
        this.visitPlace(terminal.id, terminal.value, state);
        break;
      }
      case 'throw': {
        this.visitPlace(terminal.id, terminal.value, state);
        break;
      }
      case 'for': {
        const init = this.transformValue(terminal.id, terminal.init, state);
        if (init.kind === 'replace') {
          terminal.init = init.value;
        }
        const test = this.transformValue(terminal.id, terminal.test, state);
        if (test.kind === 'replace') {
          terminal.test = test.value;
        }
        if (terminal.update !== null) {
          const update = this.transformValue(
            terminal.id,
            terminal.update,
            state,
          );
          if (update.kind === 'replace') {
            terminal.update = update.value;
          }
        }
        this.visitBlock(terminal.loop, state);
        break;
      }
      case 'for-of': {
        const init = this.transformValue(terminal.id, terminal.init, state);
        if (init.kind === 'replace') {
          terminal.init = init.value;
        }
        const test = this.transformValue(terminal.id, terminal.test, state);
        if (test.kind === 'replace') {
          terminal.test = test.value;
        }
        this.visitBlock(terminal.loop, state);
        break;
      }
      case 'for-in': {
        const init = this.transformValue(terminal.id, terminal.init, state);
        if (init.kind === 'replace') {
          terminal.init = init.value;
        }
        this.visitBlock(terminal.loop, state);
        break;
      }
      case 'do-while': {
        this.visitBlock(terminal.loop, state);
        const test = this.transformValue(terminal.id, terminal.test, state);
        if (test.kind === 'replace') {
          terminal.test = test.value;
        }
        break;
      }
      case 'while': {
        const test = this.transformValue(terminal.id, terminal.test, state);
        if (test.kind === 'replace') {
          terminal.test = test.value;
        }
        this.visitBlock(terminal.loop, state);
        break;
      }
      case 'if': {
        this.visitPlace(terminal.id, terminal.test, state);

Domain

Subdomains

Frequently Asked Questions

What does traverseTerminal() do?
traverseTerminal() is a function in the react codebase, defined in compiler/packages/babel-plugin-react-compiler/src/ReactiveScopes/visitors.ts.
Where is traverseTerminal() defined?
traverseTerminal() is defined in compiler/packages/babel-plugin-react-compiler/src/ReactiveScopes/visitors.ts at line 454.
What does traverseTerminal() call?
traverseTerminal() calls 6 function(s): assertExhaustive, transformValue, traverseTerminal, visitBlock, visitID, visitPlace.
What calls traverseTerminal()?
traverseTerminal() is called by 2 function(s): transformTerminal, traverseTerminal.

Analyze Your Own Codebase

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

Try Supermodel Free