ReactiveFunctionVisitor Class — react Architecture
Architecture documentation for the ReactiveFunctionVisitor class in visitors.ts from the react codebase.
Entity Profile
Dependency Diagram
graph TD 171a5d22_bb6b_1c99_05a4_6ad897438a35["ReactiveFunctionVisitor"] 21609915_b03a_fd75_b58a_4cb86ef9315b["visitors.ts"] 171a5d22_bb6b_1c99_05a4_6ad897438a35 -->|defined in| 21609915_b03a_fd75_b58a_4cb86ef9315b 39ff6a63_fc67_04cf_7655_c9066bab21b8["visitID()"] 171a5d22_bb6b_1c99_05a4_6ad897438a35 -->|method| 39ff6a63_fc67_04cf_7655_c9066bab21b8 2d09c559_79b4_a347_993c_6e96762f733b["visitParam()"] 171a5d22_bb6b_1c99_05a4_6ad897438a35 -->|method| 2d09c559_79b4_a347_993c_6e96762f733b 4c94103a_a617_5904_2070_e3b436762ea5["visitLValue()"] 171a5d22_bb6b_1c99_05a4_6ad897438a35 -->|method| 4c94103a_a617_5904_2070_e3b436762ea5 8d96a57b_ca06_9ec9_edd9_0932b6d3bae8["visitPlace()"] 171a5d22_bb6b_1c99_05a4_6ad897438a35 -->|method| 8d96a57b_ca06_9ec9_edd9_0932b6d3bae8 8bc54c3b_16ce_ff5e_7f85_3e5f97b0f929["visitReactiveFunctionValue()"] 171a5d22_bb6b_1c99_05a4_6ad897438a35 -->|method| 8bc54c3b_16ce_ff5e_7f85_3e5f97b0f929 efd512bc_cd12_5af4_cd24_a098be1037ec["visitValue()"] 171a5d22_bb6b_1c99_05a4_6ad897438a35 -->|method| efd512bc_cd12_5af4_cd24_a098be1037ec 4b2dfca2_90c1_e230_94e6_f6d4248bdb52["traverseValue()"] 171a5d22_bb6b_1c99_05a4_6ad897438a35 -->|method| 4b2dfca2_90c1_e230_94e6_f6d4248bdb52 af4d3127_0abf_3e44_50a8_d7a9dd0b9b58["visitInstruction()"] 171a5d22_bb6b_1c99_05a4_6ad897438a35 -->|method| af4d3127_0abf_3e44_50a8_d7a9dd0b9b58 940018a6_e890_d3b5_6044_cb8053953421["traverseInstruction()"] 171a5d22_bb6b_1c99_05a4_6ad897438a35 -->|method| 940018a6_e890_d3b5_6044_cb8053953421 833d0e1b_25d7_480b_1946_284746d6c2bb["visitTerminal()"] 171a5d22_bb6b_1c99_05a4_6ad897438a35 -->|method| 833d0e1b_25d7_480b_1946_284746d6c2bb 55773a39_5b37_d0fb_a280_dc321d87f4fb["traverseTerminal()"] 171a5d22_bb6b_1c99_05a4_6ad897438a35 -->|method| 55773a39_5b37_d0fb_a280_dc321d87f4fb 4acb57df_5348_9aab_9691_41cf35127db4["visitScope()"] 171a5d22_bb6b_1c99_05a4_6ad897438a35 -->|method| 4acb57df_5348_9aab_9691_41cf35127db4 2eebfc2b_b1f6_9f25_ad32_78be0b56f06b["traverseScope()"] 171a5d22_bb6b_1c99_05a4_6ad897438a35 -->|method| 2eebfc2b_b1f6_9f25_ad32_78be0b56f06b
Relationship Graph
Source Code
compiler/packages/babel-plugin-react-compiler/src/ReactiveScopes/visitors.ts lines 37–253
export class ReactiveFunctionVisitor<TState = void> {
visitID(_id: InstructionId, _state: TState): void {}
visitParam(_place: Place, _state: TState): void {}
visitLValue(_id: InstructionId, _lvalue: Place, _state: TState): void {}
visitPlace(_id: InstructionId, _place: Place, _state: TState): void {}
visitReactiveFunctionValue(
_id: InstructionId,
_dependencies: Array<Place>,
_fn: ReactiveFunction,
_state: TState,
): void {}
visitValue(id: InstructionId, value: ReactiveValue, state: TState): void {
this.traverseValue(id, value, state);
}
traverseValue(id: InstructionId, value: ReactiveValue, state: TState): void {
switch (value.kind) {
case 'OptionalExpression': {
this.visitValue(id, value.value, state);
break;
}
case 'LogicalExpression': {
this.visitValue(id, value.left, state);
this.visitValue(id, value.right, state);
break;
}
case 'ConditionalExpression': {
this.visitValue(id, value.test, state);
this.visitValue(id, value.consequent, state);
this.visitValue(id, value.alternate, state);
break;
}
case 'SequenceExpression': {
for (const instr of value.instructions) {
this.visitInstruction(instr, state);
}
this.visitValue(value.id, value.value, state);
break;
}
default: {
for (const place of eachInstructionValueOperand(value)) {
this.visitPlace(id, place, state);
}
}
}
}
visitInstruction(instruction: ReactiveInstruction, state: TState): void {
this.traverseInstruction(instruction, state);
}
traverseInstruction(instruction: ReactiveInstruction, state: TState): void {
this.visitID(instruction.id, state);
for (const operand of eachInstructionLValue(instruction)) {
this.visitLValue(instruction.id, operand, state);
}
this.visitValue(instruction.id, instruction.value, state);
}
visitTerminal(stmt: ReactiveTerminalStatement, state: TState): void {
this.traverseTerminal(stmt, state);
}
traverseTerminal(stmt: ReactiveTerminalStatement, state: TState): void {
const {terminal} = stmt;
if (terminal.id !== null) {
this.visitID(terminal.id, state);
}
switch (terminal.kind) {
case 'break':
case 'continue': {
break;
}
case 'return': {
this.visitPlace(terminal.id, terminal.value, state);
break;
}
case 'throw': {
this.visitPlace(terminal.id, terminal.value, state);
break;
}
case 'for': {
this.visitValue(terminal.id, terminal.init, state);
Domain
Source
Frequently Asked Questions
What is the ReactiveFunctionVisitor class?
ReactiveFunctionVisitor is a class in the react codebase, defined in compiler/packages/babel-plugin-react-compiler/src/ReactiveScopes/visitors.ts.
Where is ReactiveFunctionVisitor defined?
ReactiveFunctionVisitor is defined in compiler/packages/babel-plugin-react-compiler/src/ReactiveScopes/visitors.ts at line 37.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free