Home / Function/ resolveIdentifier() — react Function Reference

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,
    };
  }

Subdomains

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