compareDeps() — react Function Reference
Architecture documentation for the compareDeps() function in ValidatePreservedManualMemoization.ts from the react codebase.
Entity Profile
Dependency Diagram
graph TD 7573a044_2ed6_cf56_fa09_ada521a0c1c2["compareDeps()"] 24b95621_3482_c406_4b63_5b9d9e94b5af["ValidatePreservedManualMemoization.ts"] 7573a044_2ed6_cf56_fa09_ada521a0c1c2 -->|defined in| 24b95621_3482_c406_4b63_5b9d9e94b5af 6216fd83_7c2d_7eac_782b_6a1697ce7175["validateInferredDep()"] 6216fd83_7c2d_7eac_782b_6a1697ce7175 -->|calls| 7573a044_2ed6_cf56_fa09_ada521a0c1c2 style 7573a044_2ed6_cf56_fa09_ada521a0c1c2 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
compiler/packages/babel-plugin-react-compiler/src/Validation/ValidatePreservedManualMemoization.ts lines 161–212
function compareDeps(
inferred: ManualMemoDependency,
source: ManualMemoDependency,
): CompareDependencyResult {
const rootsEqual =
(inferred.root.kind === 'Global' &&
source.root.kind === 'Global' &&
inferred.root.identifierName === source.root.identifierName) ||
(inferred.root.kind === 'NamedLocal' &&
source.root.kind === 'NamedLocal' &&
inferred.root.value.identifier.id === source.root.value.identifier.id);
if (!rootsEqual) {
return CompareDependencyResult.RootDifference;
}
let isSubpath = true;
for (let i = 0; i < Math.min(inferred.path.length, source.path.length); i++) {
if (inferred.path[i].property !== source.path[i].property) {
isSubpath = false;
break;
} else if (inferred.path[i].optional !== source.path[i].optional) {
/**
* The inferred path must be at least as precise as the manual path:
* if the inferred path is optional, then the source path must have
* been optional too.
*/
return CompareDependencyResult.PathDifference;
}
}
if (
isSubpath &&
(source.path.length === inferred.path.length ||
(inferred.path.length >= source.path.length &&
!inferred.path.some(token => token.property === 'current')))
) {
return CompareDependencyResult.Ok;
} else {
if (isSubpath) {
if (
source.path.some(token => token.property === 'current') ||
inferred.path.some(token => token.property === 'current')
) {
return CompareDependencyResult.RefAccessDifference;
} else {
return CompareDependencyResult.Subpath;
}
} else {
return CompareDependencyResult.PathDifference;
}
}
}
Domain
Subdomains
Defined In
Called By
Source
Frequently Asked Questions
What does compareDeps() do?
compareDeps() is a function in the react codebase, defined in compiler/packages/babel-plugin-react-compiler/src/Validation/ValidatePreservedManualMemoization.ts.
Where is compareDeps() defined?
compareDeps() is defined in compiler/packages/babel-plugin-react-compiler/src/Validation/ValidatePreservedManualMemoization.ts at line 161.
What calls compareDeps()?
compareDeps() is called by 1 function(s): validateInferredDep.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free