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
  55773a39_5b37_d0fb_a280_dc321d87f4fb["traverseTerminal()"]
  171a5d22_bb6b_1c99_05a4_6ad897438a35["ReactiveFunctionVisitor"]
  55773a39_5b37_d0fb_a280_dc321d87f4fb -->|defined in| 171a5d22_bb6b_1c99_05a4_6ad897438a35
  833d0e1b_25d7_480b_1946_284746d6c2bb["visitTerminal()"]
  833d0e1b_25d7_480b_1946_284746d6c2bb -->|calls| 55773a39_5b37_d0fb_a280_dc321d87f4fb
  50f3d941_f0f5_a432_b09a_ae83726a516f["traverseTerminal()"]
  50f3d941_f0f5_a432_b09a_ae83726a516f -->|calls| 55773a39_5b37_d0fb_a280_dc321d87f4fb
  cf86ad4e_f1c8_5ac8_4061_3bc569f34740["visitTerminal()"]
  cf86ad4e_f1c8_5ac8_4061_3bc569f34740 -->|calls| 55773a39_5b37_d0fb_a280_dc321d87f4fb
  3ce1ff3b_6e81_02a3_536a_76e3ce96f6c3["transformTerminal()"]
  3ce1ff3b_6e81_02a3_536a_76e3ce96f6c3 -->|calls| 55773a39_5b37_d0fb_a280_dc321d87f4fb
  6e959b1d_e382_2839_615b_63b0569cad1c["visitTerminal()"]
  6e959b1d_e382_2839_615b_63b0569cad1c -->|calls| 55773a39_5b37_d0fb_a280_dc321d87f4fb
  4f251116_46b0_419d_c3db_03e4ff8a5cce["visitTerminal()"]
  4f251116_46b0_419d_c3db_03e4ff8a5cce -->|calls| 55773a39_5b37_d0fb_a280_dc321d87f4fb
  8f15af1e_7e01_3717_a54f_6134e46e8d14["visitTerminal()"]
  8f15af1e_7e01_3717_a54f_6134e46e8d14 -->|calls| 55773a39_5b37_d0fb_a280_dc321d87f4fb
  39ff6a63_fc67_04cf_7655_c9066bab21b8["visitID()"]
  55773a39_5b37_d0fb_a280_dc321d87f4fb -->|calls| 39ff6a63_fc67_04cf_7655_c9066bab21b8
  8d96a57b_ca06_9ec9_edd9_0932b6d3bae8["visitPlace()"]
  55773a39_5b37_d0fb_a280_dc321d87f4fb -->|calls| 8d96a57b_ca06_9ec9_edd9_0932b6d3bae8
  efd512bc_cd12_5af4_cd24_a098be1037ec["visitValue()"]
  55773a39_5b37_d0fb_a280_dc321d87f4fb -->|calls| efd512bc_cd12_5af4_cd24_a098be1037ec
  108b8884_5432_e93d_5f46_a6634348d340["visitBlock()"]
  55773a39_5b37_d0fb_a280_dc321d87f4fb -->|calls| 108b8884_5432_e93d_5f46_a6634348d340
  50f3d941_f0f5_a432_b09a_ae83726a516f["traverseTerminal()"]
  55773a39_5b37_d0fb_a280_dc321d87f4fb -->|calls| 50f3d941_f0f5_a432_b09a_ae83726a516f
  d7fde76c_4fd9_feb3_299b_798689f05bc6["assertExhaustive()"]
  55773a39_5b37_d0fb_a280_dc321d87f4fb -->|calls| d7fde76c_4fd9_feb3_299b_798689f05bc6
  style 55773a39_5b37_d0fb_a280_dc321d87f4fb fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

compiler/packages/babel-plugin-react-compiler/src/ReactiveScopes/visitors.ts lines 98–182

  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': {
        this.visitValue(terminal.id, terminal.init, state);
        this.visitValue(terminal.id, terminal.test, state);
        this.visitBlock(terminal.loop, state);
        if (terminal.update !== null) {
          this.visitValue(terminal.id, terminal.update, state);
        }
        break;
      }
      case 'for-of': {
        this.visitValue(terminal.id, terminal.init, state);
        this.visitValue(terminal.id, terminal.test, state);
        this.visitBlock(terminal.loop, state);
        break;
      }
      case 'for-in': {
        this.visitValue(terminal.id, terminal.init, state);
        this.visitBlock(terminal.loop, state);
        break;
      }
      case 'do-while': {
        this.visitBlock(terminal.loop, state);
        this.visitValue(terminal.id, terminal.test, state);
        break;
      }
      case 'while': {
        this.visitValue(terminal.id, terminal.test, state);
        this.visitBlock(terminal.loop, state);
        break;
      }
      case 'if': {
        this.visitPlace(terminal.id, terminal.test, state);
        this.visitBlock(terminal.consequent, state);
        if (terminal.alternate !== null) {
          this.visitBlock(terminal.alternate, state);
        }
        break;
      }
      case 'switch': {
        this.visitPlace(terminal.id, terminal.test, state);
        for (const case_ of terminal.cases) {
          if (case_.test !== null) {
            this.visitPlace(terminal.id, case_.test, state);
          }
          if (case_.block !== undefined) {
            this.visitBlock(case_.block, state);
          }
        }
        break;
      }
      case 'label': {
        this.visitBlock(terminal.block, state);
        break;
      }
      case 'try': {
        this.visitBlock(terminal.block, state);
        this.visitBlock(terminal.handler, state);
        break;
      }
      default: {
        assertExhaustive(
          terminal,
          `Unexpected terminal kind \`${(terminal as any).kind}\``,

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 98.
What does traverseTerminal() call?
traverseTerminal() calls 6 function(s): assertExhaustive, traverseTerminal, visitBlock, visitID, visitPlace, visitValue.
What calls traverseTerminal()?
traverseTerminal() is called by 7 function(s): transformTerminal, traverseTerminal, visitTerminal, visitTerminal, visitTerminal, visitTerminal, visitTerminal.

Analyze Your Own Codebase

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

Try Supermodel Free