resolveIdentifier() — react Function Reference
Architecture documentation for the resolveIdentifier() function in HIRBuilder.ts from the react codebase.
Entity Profile
Dependency Diagram
graph TD c753d1dc_3d72_6c26_43d1_a3614937be80["resolveIdentifier()"] d1b85268_f4cd_bc3c_7ba0_ee15dcc8a845["HIRBuilder"] c753d1dc_3d72_6c26_43d1_a3614937be80 -->|defined in| d1b85268_f4cd_bc3c_7ba0_ee15dcc8a845 f214c28b_2f6d_b5a3_71e1_9a69d9b50455["lower()"] f214c28b_2f6d_b5a3_71e1_9a69d9b50455 -->|calls| c753d1dc_3d72_6c26_43d1_a3614937be80 c01b12bd_811d_9f90_f641_fac8e518dbb7["lowerStatement()"] c01b12bd_811d_9f90_f641_fac8e518dbb7 -->|calls| c753d1dc_3d72_6c26_43d1_a3614937be80 ace1177a_10b2_b870_31fd_da4aa845554c["lowerExpression()"] ace1177a_10b2_b870_31fd_da4aa845554c -->|calls| c753d1dc_3d72_6c26_43d1_a3614937be80 3887db6f_f2e4_b0fc_02d3_7b45061f6669["isReorderableExpression()"] 3887db6f_f2e4_b0fc_02d3_7b45061f6669 -->|calls| c753d1dc_3d72_6c26_43d1_a3614937be80 b210ff8f_3273_1b70_4f00_b08cc41fd3dd["lowerIdentifier()"] b210ff8f_3273_1b70_4f00_b08cc41fd3dd -->|calls| c753d1dc_3d72_6c26_43d1_a3614937be80 d647d797_7545_2cf1_8751_866151e2ddee["lowerIdentifierForAssignment()"] d647d797_7545_2cf1_8751_866151e2ddee -->|calls| c753d1dc_3d72_6c26_43d1_a3614937be80 b98634fa_1f83_e1bb_1406_d07e28c93b41["lowerAssignment()"] b98634fa_1f83_e1bb_1406_d07e28c93b41 -->|calls| c753d1dc_3d72_6c26_43d1_a3614937be80 cf4d0005_5527_42f1_2412_741dbace1899["resolveBinding()"] c753d1dc_3d72_6c26_43d1_a3614937be80 -->|calls| cf4d0005_5527_42f1_2412_741dbace1899 style c753d1dc_3d72_6c26_43d1_a3614937be80 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
compiler/packages/babel-plugin-react-compiler/src/HIR/HIRBuilder.ts lines 232–291
resolveIdentifier(
path: NodePath<t.Identifier | t.JSXIdentifier>,
): VariableBinding {
const originalName = path.node.name;
const babelBinding = this.#resolveBabelBinding(path);
if (babelBinding == null) {
return {kind: 'Global', name: originalName};
}
// Check if the binding is from module scope
const outerBinding =
this.#env.parentFunction.scope.parent.getBinding(originalName);
if (babelBinding === outerBinding) {
const path = babelBinding.path;
if (path.isImportDefaultSpecifier()) {
const importDeclaration =
path.parentPath as NodePath<t.ImportDeclaration>;
return {
kind: 'ImportDefault',
name: originalName,
module: importDeclaration.node.source.value,
};
} else if (path.isImportSpecifier()) {
const importDeclaration =
path.parentPath as NodePath<t.ImportDeclaration>;
return {
kind: 'ImportSpecifier',
name: originalName,
module: importDeclaration.node.source.value,
imported:
path.node.imported.type === 'Identifier'
? path.node.imported.name
: path.node.imported.value,
};
} else if (path.isImportNamespaceSpecifier()) {
const importDeclaration =
path.parentPath as NodePath<t.ImportDeclaration>;
return {
kind: 'ImportNamespace',
name: originalName,
module: importDeclaration.node.source.value,
};
} else {
return {
kind: 'ModuleLocal',
name: originalName,
};
}
}
const resolvedBinding = this.resolveBinding(babelBinding.identifier);
if (resolvedBinding.name && resolvedBinding.name.value !== originalName) {
babelBinding.scope.rename(originalName, resolvedBinding.name.value);
}
return {
kind: 'Identifier',
identifier: resolvedBinding,
bindingKind: babelBinding.kind,
};
}
Domain
Subdomains
Calls
Called By
Source
Frequently Asked Questions
What does resolveIdentifier() do?
resolveIdentifier() is a function in the react codebase, defined in compiler/packages/babel-plugin-react-compiler/src/HIR/HIRBuilder.ts.
Where is resolveIdentifier() defined?
resolveIdentifier() is defined in compiler/packages/babel-plugin-react-compiler/src/HIR/HIRBuilder.ts at line 232.
What does resolveIdentifier() call?
resolveIdentifier() calls 1 function(s): resolveBinding.
What calls resolveIdentifier()?
resolveIdentifier() is called by 7 function(s): isReorderableExpression, lower, lowerAssignment, lowerExpression, lowerIdentifier, lowerIdentifierForAssignment, lowerStatement.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free