Home / Function/ lowerMemberExpression() — react Function Reference

lowerMemberExpression() — react Function Reference

Architecture documentation for the lowerMemberExpression() function in BuildHIR.ts from the react codebase.

Entity Profile

Dependency Diagram

graph TD
  d3430316_6bb4_9d91_4539_1bff5c189f83["lowerMemberExpression()"]
  e04c04d6_37a7_1dc3_7fae_7d07660d0af9["BuildHIR.ts"]
  d3430316_6bb4_9d91_4539_1bff5c189f83 -->|defined in| e04c04d6_37a7_1dc3_7fae_7d07660d0af9
  ace1177a_10b2_b870_31fd_da4aa845554c["lowerExpression()"]
  ace1177a_10b2_b870_31fd_da4aa845554c -->|calls| d3430316_6bb4_9d91_4539_1bff5c189f83
  bb81d73c_5996_9609_94fe_e0f8ad5e876d["lowerOptionalMemberExpression()"]
  bb81d73c_5996_9609_94fe_e0f8ad5e876d -->|calls| d3430316_6bb4_9d91_4539_1bff5c189f83
  e401a324_13b9_af8a_12c7_b731c9f220a3["lowerOptionalCallExpression()"]
  e401a324_13b9_af8a_12c7_b731c9f220a3 -->|calls| d3430316_6bb4_9d91_4539_1bff5c189f83
  5bae3f87_1b76_e568_9b44_1d2fb59f73d8["lowerExpressionToTemporary()"]
  d3430316_6bb4_9d91_4539_1bff5c189f83 -->|calls| 5bae3f87_1b76_e568_9b44_1d2fb59f73d8
  3532df9c_cf42_5889_99aa_db6c6d3e1708["makePropertyLiteral()"]
  d3430316_6bb4_9d91_4539_1bff5c189f83 -->|calls| 3532df9c_cf42_5889_99aa_db6c6d3e1708
  073c81a5_c389_d108_5b8f_4d6dc6eece83["push()"]
  d3430316_6bb4_9d91_4539_1bff5c189f83 -->|calls| 073c81a5_c389_d108_5b8f_4d6dc6eece83
  00c689b1_d881_800b_f1df_076ada6a2c75["toString()"]
  d3430316_6bb4_9d91_4539_1bff5c189f83 -->|calls| 00c689b1_d881_800b_f1df_076ada6a2c75
  style d3430316_6bb4_9d91_4539_1bff5c189f83 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

compiler/packages/babel-plugin-react-compiler/src/HIR/BuildHIR.ts lines 3179–3244

function lowerMemberExpression(
  builder: HIRBuilder,
  expr: NodePath<t.MemberExpression | t.OptionalMemberExpression>,
  loweredObject: Place | null = null,
): LoweredMemberExpression {
  const exprNode = expr.node;
  const exprLoc = exprNode.loc ?? GeneratedSource;
  const objectNode = expr.get('object');
  const propertyNode = expr.get('property');
  const object =
    loweredObject ?? lowerExpressionToTemporary(builder, objectNode);

  if (!expr.node.computed || expr.node.property.type === 'NumericLiteral') {
    let property: PropertyLiteral;
    if (propertyNode.isIdentifier()) {
      property = makePropertyLiteral(propertyNode.node.name);
    } else if (propertyNode.isNumericLiteral()) {
      property = makePropertyLiteral(propertyNode.node.value);
    } else {
      builder.errors.push({
        reason: `(BuildHIR::lowerMemberExpression) Handle ${propertyNode.type} property`,
        category: ErrorCategory.Todo,
        loc: propertyNode.node.loc ?? null,
        suggestions: null,
      });
      return {
        object,
        property: propertyNode.toString(),
        value: {kind: 'UnsupportedNode', node: exprNode, loc: exprLoc},
      };
    }
    const value: InstructionValue = {
      kind: 'PropertyLoad',
      object: {...object},
      property,
      loc: exprLoc,
    };
    return {object, property, value};
  } else {
    if (!propertyNode.isExpression()) {
      builder.errors.push({
        reason: `(BuildHIR::lowerMemberExpression) Expected Expression, got ${propertyNode.type} property`,
        category: ErrorCategory.Todo,
        loc: propertyNode.node.loc ?? null,
        suggestions: null,
      });
      return {
        object,
        property: propertyNode.toString(),
        value: {
          kind: 'UnsupportedNode',
          node: exprNode,
          loc: exprLoc,
        },
      };
    }
    const property = lowerExpressionToTemporary(builder, propertyNode);
    const value: InstructionValue = {
      kind: 'ComputedLoad',
      object: {...object},
      property: {...property},
      loc: exprLoc,
    };
    return {object, property, value};
  }
}

Subdomains

Frequently Asked Questions

What does lowerMemberExpression() do?
lowerMemberExpression() is a function in the react codebase, defined in compiler/packages/babel-plugin-react-compiler/src/HIR/BuildHIR.ts.
Where is lowerMemberExpression() defined?
lowerMemberExpression() is defined in compiler/packages/babel-plugin-react-compiler/src/HIR/BuildHIR.ts at line 3179.
What does lowerMemberExpression() call?
lowerMemberExpression() calls 4 function(s): lowerExpressionToTemporary, makePropertyLiteral, push, toString.
What calls lowerMemberExpression()?
lowerMemberExpression() is called by 3 function(s): lowerExpression, lowerOptionalCallExpression, lowerOptionalMemberExpression.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free