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};
}
}
Domain
Subdomains
Source
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