Home / Function/ findOptionalPlaces() — react Function Reference

findOptionalPlaces() — react Function Reference

Architecture documentation for the findOptionalPlaces() function in DropManualMemoization.ts from the react codebase.

Entity Profile

Dependency Diagram

graph TD
  6dd28fec_69c3_eac3_c226_cd84ba88484d["findOptionalPlaces()"]
  4b3f307b_2e5b_6c5a_0729_065bd25db103["DropManualMemoization.ts"]
  6dd28fec_69c3_eac3_c226_cd84ba88484d -->|defined in| 4b3f307b_2e5b_6c5a_0729_065bd25db103
  dad92af5_71c7_94b3_8cce_ac3af87f3e61["dropManualMemoization()"]
  dad92af5_71c7_94b3_8cce_ac3af87f3e61 -->|calls| 6dd28fec_69c3_eac3_c226_cd84ba88484d
  041ca752_10c1_3cda_1f5c_02f44a01310e["invariant()"]
  6dd28fec_69c3_eac3_c226_cd84ba88484d -->|calls| 041ca752_10c1_3cda_1f5c_02f44a01310e
  style 6dd28fec_69c3_eac3_c226_cd84ba88484d fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

compiler/packages/babel-plugin-react-compiler/src/Inference/DropManualMemoization.ts lines 556–602

function findOptionalPlaces(fn: HIRFunction): Set<IdentifierId> {
  const optionals = new Set<IdentifierId>();
  for (const [, block] of fn.body.blocks) {
    if (block.terminal.kind === 'optional' && block.terminal.optional) {
      const optionalTerminal = block.terminal;
      let testBlock = fn.body.blocks.get(block.terminal.test)!;
      loop: while (true) {
        const terminal = testBlock.terminal;
        switch (terminal.kind) {
          case 'branch': {
            if (terminal.fallthrough === optionalTerminal.fallthrough) {
              // found it
              const consequent = fn.body.blocks.get(terminal.consequent)!;
              const last = consequent.instructions.at(-1);
              if (last !== undefined && last.value.kind === 'StoreLocal') {
                optionals.add(last.value.value.identifier.id);
              }
              break loop;
            } else {
              testBlock = fn.body.blocks.get(terminal.fallthrough)!;
            }
            break;
          }
          case 'optional':
          case 'logical':
          case 'sequence':
          case 'ternary': {
            testBlock = fn.body.blocks.get(terminal.fallthrough)!;
            break;
          }
          case 'maybe-throw': {
            testBlock = fn.body.blocks.get(terminal.continuation)!;
            break;
          }
          default: {
            CompilerError.invariant(false, {
              reason: `Unexpected terminal in optional`,
              message: `Unexpected ${terminal.kind} in optional`,
              loc: terminal.loc,
            });
          }
        }
      }
    }
  }
  return optionals;
}

Domain

Subdomains

Calls

Frequently Asked Questions

What does findOptionalPlaces() do?
findOptionalPlaces() is a function in the react codebase, defined in compiler/packages/babel-plugin-react-compiler/src/Inference/DropManualMemoization.ts.
Where is findOptionalPlaces() defined?
findOptionalPlaces() is defined in compiler/packages/babel-plugin-react-compiler/src/Inference/DropManualMemoization.ts at line 556.
What does findOptionalPlaces() call?
findOptionalPlaces() calls 1 function(s): invariant.
What calls findOptionalPlaces()?
findOptionalPlaces() is called by 1 function(s): dropManualMemoization.

Analyze Your Own Codebase

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

Try Supermodel Free