eachTerminalOperand() — react Function Reference
Architecture documentation for the eachTerminalOperand() function in visitors.ts from the react codebase.
Entity Profile
Dependency Diagram
graph TD 41232a25_deb6_6e83_05a8_ae9f961656f7["eachTerminalOperand()"] 2f3caf55_cc64_415c_55dd_9771ba7dc210["visitors.ts"] 41232a25_deb6_6e83_05a8_ae9f961656f7 -->|defined in| 2f3caf55_cc64_415c_55dd_9771ba7dc210 505f2e0b_d43c_5972_8865_373d0dd08a6a["assertConsistentIdentifiers()"] 505f2e0b_d43c_5972_8865_373d0dd08a6a -->|calls| 41232a25_deb6_6e83_05a8_ae9f961656f7 ad41542d_7277_a7c4_02f9_ea27be6345d4["getScopes()"] ad41542d_7277_a7c4_02f9_ea27be6345d4 -->|calls| 41232a25_deb6_6e83_05a8_ae9f961656f7 5b525258_03ba_b7ed_2935_0cd222ac2db3["assertValidMutableRanges()"] 5b525258_03ba_b7ed_2935_0cd222ac2db3 -->|calls| 41232a25_deb6_6e83_05a8_ae9f961656f7 20604946_1e38_3a1d_16f9_b7ef2a574d7c["collectScopeInfo()"] 20604946_1e38_3a1d_16f9_b7ef2a574d7c -->|calls| 41232a25_deb6_6e83_05a8_ae9f961656f7 764ec9fb_0ee9_a9ca_abc4_d7c652d01a09["getOverlappingReactiveScopes()"] 764ec9fb_0ee9_a9ca_abc4_d7c652d01a09 -->|calls| 41232a25_deb6_6e83_05a8_ae9f961656f7 3cbb5167_d55c_6775_cfe5_cd15846ca8d2["findTemporariesUsedOutsideDeclaringScope()"] 3cbb5167_d55c_6775_cfe5_cd15846ca8d2 -->|calls| 41232a25_deb6_6e83_05a8_ae9f961656f7 5b709ffb_65e9_2125_d608_a351c667cd6c["collectDependencies()"] 5b709ffb_65e9_2125_d608_a351c667cd6c -->|calls| 41232a25_deb6_6e83_05a8_ae9f961656f7 82ed3f4d_ad20_778d_000e_ca92ed3492fd["inferReactiveIdentifiers()"] 82ed3f4d_ad20_778d_000e_ca92ed3492fd -->|calls| 41232a25_deb6_6e83_05a8_ae9f961656f7 a434dd08_0de3_17ca_8d4f_08a598a9c73e["findHoistedContextDeclarations()"] a434dd08_0de3_17ca_8d4f_08a598a9c73e -->|calls| 41232a25_deb6_6e83_05a8_ae9f961656f7 f3815d1a_36a1_3e3d_92f2_dbbe88f01fe3["inferMutationAliasingRanges()"] f3815d1a_36a1_3e3d_92f2_dbbe88f01fe3 -->|calls| 41232a25_deb6_6e83_05a8_ae9f961656f7 fddc4da2_1151_8052_c771_8b67085ebeca["inferReactivePlaces()"] fddc4da2_1151_8052_c771_8b67085ebeca -->|calls| 41232a25_deb6_6e83_05a8_ae9f961656f7 b86031b6_78ac_d498_c775_7aedeaf6521e["findReferencedIdentifiers()"] b86031b6_78ac_d498_c775_7aedeaf6521e -->|calls| 41232a25_deb6_6e83_05a8_ae9f961656f7 8b5121a5_55ad_8904_6f4c_ab19201c32ee["findReferencedRangeOfTemporaries()"] 8b5121a5_55ad_8904_6f4c_ab19201c32ee -->|calls| 41232a25_deb6_6e83_05a8_ae9f961656f7 style 41232a25_deb6_6e83_05a8_ae9f961656f7 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
compiler/packages/babel-plugin-react-compiler/src/HIR/visitors.ts lines 1176–1233
export function* eachTerminalOperand(terminal: Terminal): Iterable<Place> {
switch (terminal.kind) {
case 'if': {
yield terminal.test;
break;
}
case 'branch': {
yield terminal.test;
break;
}
case 'switch': {
yield terminal.test;
for (const case_ of terminal.cases) {
if (case_.test === null) {
continue;
}
yield case_.test;
}
break;
}
case 'return':
case 'throw': {
yield terminal.value;
break;
}
case 'try': {
if (terminal.handlerBinding !== null) {
yield terminal.handlerBinding;
}
break;
}
case 'maybe-throw':
case 'sequence':
case 'label':
case 'optional':
case 'ternary':
case 'logical':
case 'do-while':
case 'while':
case 'for':
case 'for-of':
case 'for-in':
case 'goto':
case 'unreachable':
case 'unsupported':
case 'scope':
case 'pruned-scope': {
// no-op
break;
}
default: {
assertExhaustive(
terminal,
`Unexpected terminal kind \`${(terminal as any).kind}\``,
);
}
}
}
Domain
Subdomains
Calls
Called By
- alignReactiveScopesToBlockScopesHIR()
- assertConsistentIdentifiers()
- assertValidMutableRanges()
- collectDependencies()
- collectDependencies()
- collectReactiveIdentifiersHIR()
- collectScopeInfo()
- eliminateRedundantPhi()
- findHoistedContextDeclarations()
- findReferencedIdentifiers()
- findReferencedRangeOfTemporaries()
- findTemporariesUsedOutsideDeclaringScope()
- getContextReassignment()
- getOverlappingReactiveScopes()
- getScopes()
- inferMutationAliasingRanges()
- inferReactiveIdentifiers()
- inferReactivePlaces()
- optimizeForSSR()
- reorderBlock()
- validateEffect()
- validateHooksUsage()
- validateNoFreezingKnownMutableFunctions()
- validateNoRefAccessInRenderImpl()
- validateUseMemo()
- visitHirFunction()
Source
Frequently Asked Questions
What does eachTerminalOperand() do?
eachTerminalOperand() is a function in the react codebase, defined in compiler/packages/babel-plugin-react-compiler/src/HIR/visitors.ts.
Where is eachTerminalOperand() defined?
eachTerminalOperand() is defined in compiler/packages/babel-plugin-react-compiler/src/HIR/visitors.ts at line 1176.
What does eachTerminalOperand() call?
eachTerminalOperand() calls 1 function(s): assertExhaustive.
What calls eachTerminalOperand()?
eachTerminalOperand() is called by 26 function(s): alignReactiveScopesToBlockScopesHIR, assertConsistentIdentifiers, assertValidMutableRanges, collectDependencies, collectDependencies, collectReactiveIdentifiersHIR, collectScopeInfo, eliminateRedundantPhi, and 18 more.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free