validateNoDerivedComputationsInEffects() — react Function Reference
Architecture documentation for the validateNoDerivedComputationsInEffects() function in ValidateNoDerivedComputationsInEffects.ts from the react codebase.
Entity Profile
Dependency Diagram
graph TD 1d91b2b6_6806_f495_0567_ab13bf567e33["validateNoDerivedComputationsInEffects()"] a3af5b5e_3d98_91f8_296b_f84c4c65a51c["ValidateNoDerivedComputationsInEffects.ts"] 1d91b2b6_6806_f495_0567_ab13bf567e33 -->|defined in| a3af5b5e_3d98_91f8_296b_f84c4c65a51c c3bc3875_256f_8f5e_7800_2f9c5bae65eb["runWithEnvironment()"] c3bc3875_256f_8f5e_7800_2f9c5bae65eb -->|calls| 1d91b2b6_6806_f495_0567_ab13bf567e33 041ca752_10c1_3cda_1f5c_02f44a01310e["invariant()"] 1d91b2b6_6806_f495_0567_ab13bf567e33 -->|calls| 041ca752_10c1_3cda_1f5c_02f44a01310e a72f7c73_27c5_90bc_40c7_fca057f06dfa["validateEffect()"] 1d91b2b6_6806_f495_0567_ab13bf567e33 -->|calls| a72f7c73_27c5_90bc_40c7_fca057f06dfa 6d8385f7_ca89_0968_e79e_ed2e1aa846c9["hasAnyErrors()"] 1d91b2b6_6806_f495_0567_ab13bf567e33 -->|calls| 6d8385f7_ca89_0968_e79e_ed2e1aa846c9 style 1d91b2b6_6806_f495_0567_ab13bf567e33 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
compiler/packages/babel-plugin-react-compiler/src/Validation/ValidateNoDerivedComputationsInEffects.ts lines 47–103
export function validateNoDerivedComputationsInEffects(fn: HIRFunction): void {
const candidateDependencies: Map<IdentifierId, ArrayExpression> = new Map();
const functions: Map<IdentifierId, FunctionExpression> = new Map();
const locals: Map<IdentifierId, IdentifierId> = new Map();
const errors = new CompilerError();
for (const block of fn.body.blocks.values()) {
for (const instr of block.instructions) {
const {lvalue, value} = instr;
if (value.kind === 'LoadLocal') {
locals.set(lvalue.identifier.id, value.place.identifier.id);
} else if (value.kind === 'ArrayExpression') {
candidateDependencies.set(lvalue.identifier.id, value);
} else if (value.kind === 'FunctionExpression') {
functions.set(lvalue.identifier.id, value);
} else if (
value.kind === 'CallExpression' ||
value.kind === 'MethodCall'
) {
const callee =
value.kind === 'CallExpression' ? value.callee : value.property;
if (
isUseEffectHookType(callee.identifier) &&
value.args.length === 2 &&
value.args[0].kind === 'Identifier' &&
value.args[1].kind === 'Identifier'
) {
const effectFunction = functions.get(value.args[0].identifier.id);
const deps = candidateDependencies.get(value.args[1].identifier.id);
if (
effectFunction != null &&
deps != null &&
deps.elements.length !== 0 &&
deps.elements.every(element => element.kind === 'Identifier')
) {
const dependencies: Array<IdentifierId> = deps.elements.map(dep => {
CompilerError.invariant(dep.kind === 'Identifier', {
reason: `Dependency is checked as a place above`,
loc: value.loc,
});
return locals.get(dep.identifier.id) ?? dep.identifier.id;
});
validateEffect(
effectFunction.loweredFunc.func,
dependencies,
errors,
);
}
}
}
}
}
if (errors.hasAnyErrors()) {
throw errors;
}
}
Domain
Subdomains
Called By
Source
Frequently Asked Questions
What does validateNoDerivedComputationsInEffects() do?
validateNoDerivedComputationsInEffects() is a function in the react codebase, defined in compiler/packages/babel-plugin-react-compiler/src/Validation/ValidateNoDerivedComputationsInEffects.ts.
Where is validateNoDerivedComputationsInEffects() defined?
validateNoDerivedComputationsInEffects() is defined in compiler/packages/babel-plugin-react-compiler/src/Validation/ValidateNoDerivedComputationsInEffects.ts at line 47.
What does validateNoDerivedComputationsInEffects() call?
validateNoDerivedComputationsInEffects() calls 3 function(s): hasAnyErrors, invariant, validateEffect.
What calls validateNoDerivedComputationsInEffects()?
validateNoDerivedComputationsInEffects() is called by 1 function(s): runWithEnvironment.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free