collectTemporaries() — react Function Reference
Architecture documentation for the collectTemporaries() function in DropManualMemoization.ts from the react codebase.
Entity Profile
Dependency Diagram
graph TD 533a7910_d29b_7d0b_f466_45a408400f6f["collectTemporaries()"] dbbffa67_2b06_b242_b8f0_f66f49b12888["DropManualMemoization.ts"] 533a7910_d29b_7d0b_f466_45a408400f6f -->|defined in| dbbffa67_2b06_b242_b8f0_f66f49b12888 f7d1065c_fe0b_6eca_1692_3de9f53ad7b0["dropManualMemoization()"] f7d1065c_fe0b_6eca_1692_3de9f53ad7b0 -->|calls| 533a7910_d29b_7d0b_f466_45a408400f6f 613eb182_0851_51b8_80a5_ce81e47d6cb1["collectMaybeMemoDependencies()"] 533a7910_d29b_7d0b_f466_45a408400f6f -->|calls| 613eb182_0851_51b8_80a5_ce81e47d6cb1 style 533a7910_d29b_7d0b_f466_45a408400f6f fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
compiler/packages/babel-plugin-react-compiler/src/Inference/DropManualMemoization.ts lines 124–183
function collectTemporaries(
instr: Instruction,
env: Environment,
sidemap: IdentifierSidemap,
): void {
const {value, lvalue} = instr;
switch (value.kind) {
case 'FunctionExpression': {
sidemap.functions.set(
instr.lvalue.identifier.id,
instr as TInstruction<FunctionExpression>,
);
break;
}
case 'LoadGlobal': {
const global = env.getGlobalDeclaration(value.binding, value.loc);
const hookKind = global !== null ? getHookKindForType(env, global) : null;
const lvalId = instr.lvalue.identifier.id;
if (hookKind === 'useMemo' || hookKind === 'useCallback') {
sidemap.manualMemos.set(lvalId, {
kind: hookKind,
loadInstr: instr as TInstruction<LoadGlobal>,
});
} else if (value.binding.name === 'React') {
sidemap.react.add(lvalId);
}
break;
}
case 'PropertyLoad': {
if (sidemap.react.has(value.object.identifier.id)) {
const property = value.property;
if (property === 'useMemo' || property === 'useCallback') {
sidemap.manualMemos.set(instr.lvalue.identifier.id, {
kind: property as 'useMemo' | 'useCallback',
loadInstr: instr as TInstruction<PropertyLoad>,
});
}
}
break;
}
case 'ArrayExpression': {
if (value.elements.every(e => e.kind === 'Identifier')) {
sidemap.maybeDepsLists.set(instr.lvalue.identifier.id, {
loc: value.loc,
deps: value.elements as Array<Place>,
});
}
break;
}
}
const maybeDep = collectMaybeMemoDependencies(
value,
sidemap.maybeDeps,
sidemap.optionals.has(lvalue.identifier.id),
);
// We don't expect named lvalues during this pass (unlike ValidatePreservingManualMemo)
if (maybeDep != null) {
sidemap.maybeDeps.set(lvalue.identifier.id, maybeDep);
}
}
Domain
Subdomains
Called By
Source
Frequently Asked Questions
What does collectTemporaries() do?
collectTemporaries() is a function in the react codebase, defined in compiler/packages/babel-plugin-react-compiler/src/Inference/DropManualMemoization.ts.
Where is collectTemporaries() defined?
collectTemporaries() is defined in compiler/packages/babel-plugin-react-compiler/src/Inference/DropManualMemoization.ts at line 124.
What does collectTemporaries() call?
collectTemporaries() calls 1 function(s): collectMaybeMemoDependencies.
What calls collectTemporaries()?
collectTemporaries() 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