Home / Class/ FindLastUsageVisitor Class — react Architecture

FindLastUsageVisitor Class — react Architecture

Architecture documentation for the FindLastUsageVisitor class in MergeReactiveScopesThatInvalidateTogether.ts from the react codebase.

Entity Profile

Dependency Diagram

graph TD
  67281297_ccca_b8cf_1492_cc1d8f119b8a["FindLastUsageVisitor"]
  006711fe_6949_9be8_4726_2031284f3328["MergeReactiveScopesThatInvalidateTogether.ts"]
  67281297_ccca_b8cf_1492_cc1d8f119b8a -->|defined in| 006711fe_6949_9be8_4726_2031284f3328
  a5ee5bf7_c39f_5e11_a6de_764e4d21eb07["visitPlace()"]
  67281297_ccca_b8cf_1492_cc1d8f119b8a -->|method| a5ee5bf7_c39f_5e11_a6de_764e4d21eb07

Relationship Graph

Source Code

compiler/packages/babel-plugin-react-compiler/src/ReactiveScopes/MergeReactiveScopesThatInvalidateTogether.ts lines 101–119

class FindLastUsageVisitor extends ReactiveFunctionVisitor<void> {
  /*
   * TODO LeaveSSA: use IdentifierId for more precise tracking
   * Using DeclarationId is necessary for compatible output but produces suboptimal results
   * in cases where a scope defines a variable, but that version is never read and always
   * overwritten later.
   * see reassignment-separate-scopes.js for example
   */
  lastUsage: Map<DeclarationId, InstructionId> = new Map();

  override visitPlace(id: InstructionId, place: Place, _state: void): void {
    const previousUsage = this.lastUsage.get(place.identifier.declarationId);
    const lastUsage =
      previousUsage !== undefined
        ? makeInstructionId(Math.max(previousUsage, id))
        : id;
    this.lastUsage.set(place.identifier.declarationId, lastUsage);
  }
}

Domain

Frequently Asked Questions

What is the FindLastUsageVisitor class?
FindLastUsageVisitor is a class in the react codebase, defined in compiler/packages/babel-plugin-react-compiler/src/ReactiveScopes/MergeReactiveScopesThatInvalidateTogether.ts.
Where is FindLastUsageVisitor defined?
FindLastUsageVisitor is defined in compiler/packages/babel-plugin-react-compiler/src/ReactiveScopes/MergeReactiveScopesThatInvalidateTogether.ts at line 101.

Analyze Your Own Codebase

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

Try Supermodel Free