Home / Function/ writeTerminal() — react Function Reference

writeTerminal() — react Function Reference

Architecture documentation for the writeTerminal() function in PrintReactiveFunction.ts from the react codebase.

Entity Profile

Dependency Diagram

graph TD
  c8b741bc_d083_e427_bf52_4efdedb0cfca["writeTerminal()"]
  d77f9ffb_2d12_7d1f_126f_8c05214f0059["PrintReactiveFunction.ts"]
  c8b741bc_d083_e427_bf52_4efdedb0cfca -->|defined in| d77f9ffb_2d12_7d1f_126f_8c05214f0059
  5b0b4134_f31c_d57b_a687_fa6358a8ebe1["writeReactiveInstruction()"]
  5b0b4134_f31c_d57b_a687_fa6358a8ebe1 -->|calls| c8b741bc_d083_e427_bf52_4efdedb0cfca
  a57f5077_0592_63a3_96e6_c8d4b5711e59["printReactiveTerminal()"]
  a57f5077_0592_63a3_96e6_c8d4b5711e59 -->|calls| c8b741bc_d083_e427_bf52_4efdedb0cfca
  d0290dff_c442_0216_dbb6_27657f40b130["writeLine()"]
  c8b741bc_d083_e427_bf52_4efdedb0cfca -->|calls| d0290dff_c442_0216_dbb6_27657f40b130
  cfec30fc_785b_6ff8_440a_c84098aac705["writeReactiveInstructions()"]
  c8b741bc_d083_e427_bf52_4efdedb0cfca -->|calls| cfec30fc_785b_6ff8_440a_c84098aac705
  49a02012_cdfd_58a3_d7f3_fb778e20ab1b["indented()"]
  c8b741bc_d083_e427_bf52_4efdedb0cfca -->|calls| 49a02012_cdfd_58a3_d7f3_fb778e20ab1b
  71a9f37b_77ef_a53d_21a5_a209ffc89311["writeReactiveValue()"]
  c8b741bc_d083_e427_bf52_4efdedb0cfca -->|calls| 71a9f37b_77ef_a53d_21a5_a209ffc89311
  bf7f1cf7_fc0e_6bac_827c_8d36d98126da["printPlace()"]
  c8b741bc_d083_e427_bf52_4efdedb0cfca -->|calls| bf7f1cf7_fc0e_6bac_827c_8d36d98126da
  041ca752_10c1_3cda_1f5c_02f44a01310e["invariant()"]
  c8b741bc_d083_e427_bf52_4efdedb0cfca -->|calls| 041ca752_10c1_3cda_1f5c_02f44a01310e
  ccaebcb0_5128_cdb1_7336_203ff87e3e3c["write()"]
  c8b741bc_d083_e427_bf52_4efdedb0cfca -->|calls| ccaebcb0_5128_cdb1_7336_203ff87e3e3c
  d7fde76c_4fd9_feb3_299b_798689f05bc6["assertExhaustive()"]
  c8b741bc_d083_e427_bf52_4efdedb0cfca -->|calls| d7fde76c_4fd9_feb3_299b_798689f05bc6
  style c8b741bc_d083_e427_bf52_4efdedb0cfca fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

compiler/packages/babel-plugin-react-compiler/src/ReactiveScopes/PrintReactiveFunction.ts lines 265–407

function writeTerminal(writer: Writer, terminal: ReactiveTerminal): void {
  switch (terminal.kind) {
    case 'break': {
      const id = terminal.id !== null ? `[${terminal.id}]` : [];
      writer.writeLine(
        `${id} break bb${terminal.target} (${terminal.targetKind})`,
      );

      break;
    }
    case 'continue': {
      const id = `[${terminal.id}]`;
      writer.writeLine(
        `${id} continue bb${terminal.target} (${terminal.targetKind})`,
      );
      break;
    }
    case 'do-while': {
      writer.writeLine(`[${terminal.id}] do-while {`);
      writeReactiveInstructions(writer, terminal.loop);
      writer.writeLine('} (');
      writer.indented(() => {
        writeReactiveValue(writer, terminal.test);
      });
      writer.writeLine(')');
      break;
    }
    case 'while': {
      writer.writeLine(`[${terminal.id}] while (`);
      writer.indented(() => {
        writeReactiveValue(writer, terminal.test);
      });
      writer.writeLine(') {');
      writeReactiveInstructions(writer, terminal.loop);
      writer.writeLine('}');
      break;
    }
    case 'if': {
      const {test, consequent, alternate} = terminal;
      writer.writeLine(`[${terminal.id}] if (${printPlace(test)}) {`);
      writeReactiveInstructions(writer, consequent);
      if (alternate !== null) {
        writer.writeLine('} else {');
        writeReactiveInstructions(writer, alternate);
      }
      writer.writeLine('}');
      break;
    }
    case 'switch': {
      writer.writeLine(
        `[${terminal.id}] switch (${printPlace(terminal.test)}) {`,
      );
      writer.indented(() => {
        for (const case_ of terminal.cases) {
          let prefix =
            case_.test !== null ? `case ${printPlace(case_.test)}` : 'default';
          writer.writeLine(`${prefix}: {`);
          writer.indented(() => {
            const block = case_.block;
            CompilerError.invariant(block != null, {
              reason: 'Expected case to have a block',
              loc: case_.test?.loc ?? GeneratedSource,
            });
            writeReactiveInstructions(writer, block);
          });
          writer.writeLine('}');
        }
      });
      writer.writeLine('}');
      break;
    }
    case 'for': {
      writer.writeLine(`[${terminal.id}] for (`);
      writer.indented(() => {
        writeReactiveValue(writer, terminal.init);
        writer.writeLine(';');
        writeReactiveValue(writer, terminal.test);
        writer.writeLine(';');
        if (terminal.update !== null) {
          writeReactiveValue(writer, terminal.update);
        }

Domain

Subdomains

Frequently Asked Questions

What does writeTerminal() do?
writeTerminal() is a function in the react codebase, defined in compiler/packages/babel-plugin-react-compiler/src/ReactiveScopes/PrintReactiveFunction.ts.
Where is writeTerminal() defined?
writeTerminal() is defined in compiler/packages/babel-plugin-react-compiler/src/ReactiveScopes/PrintReactiveFunction.ts at line 265.
What does writeTerminal() call?
writeTerminal() calls 8 function(s): assertExhaustive, indented, invariant, printPlace, write, writeLine, writeReactiveInstructions, writeReactiveValue.
What calls writeTerminal()?
writeTerminal() is called by 2 function(s): printReactiveTerminal, writeReactiveInstruction.

Analyze Your Own Codebase

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

Try Supermodel Free