Env Class — react Architecture
Architecture documentation for the Env class in ValidateNoRefAccessInRender.ts from the react codebase.
Entity Profile
Dependency Diagram
graph TD 03c81825_9ee1_25a9_77c1_47db9451d57a["Env"] 8dbbe52d_b145_88fe_e0da_33d06180b558["ValidateNoRefAccessInRender.ts"] 03c81825_9ee1_25a9_77c1_47db9451d57a -->|defined in| 8dbbe52d_b145_88fe_e0da_33d06180b558 cc91bbf1_faca_3914_594f_24cffad498d7["lookup()"] 03c81825_9ee1_25a9_77c1_47db9451d57a -->|method| cc91bbf1_faca_3914_594f_24cffad498d7 a528e49e_203d_1992_f547_8d36686e5118["define()"] 03c81825_9ee1_25a9_77c1_47db9451d57a -->|method| a528e49e_203d_1992_f547_8d36686e5118 703ada51_efe0_2d7f_4d0e_20ccb2368f5b["resetChanged()"] 03c81825_9ee1_25a9_77c1_47db9451d57a -->|method| 703ada51_efe0_2d7f_4d0e_20ccb2368f5b e7653811_3330_bff9_8326_86d4e0b3d509["hasChanged()"] 03c81825_9ee1_25a9_77c1_47db9451d57a -->|method| e7653811_3330_bff9_8326_86d4e0b3d509 03dffe4e_b34b_74b6_636a_f8dfe1a2b604["get()"] 03c81825_9ee1_25a9_77c1_47db9451d57a -->|method| 03dffe4e_b34b_74b6_636a_f8dfe1a2b604 648272d7_e6a6_0efe_25c4_d76434ffaafb["set()"] 03c81825_9ee1_25a9_77c1_47db9451d57a -->|method| 648272d7_e6a6_0efe_25c4_d76434ffaafb
Relationship Graph
Source Code
compiler/packages/babel-plugin-react-compiler/src/Validation/ValidateNoRefAccessInRender.ts lines 84–123
class Env {
#changed = false;
#data: Map<IdentifierId, RefAccessType> = new Map();
#temporaries: Map<IdentifierId, Place> = new Map();
lookup(place: Place): Place {
return this.#temporaries.get(place.identifier.id) ?? place;
}
define(place: Place, value: Place): void {
this.#temporaries.set(place.identifier.id, value);
}
resetChanged(): void {
this.#changed = false;
}
hasChanged(): boolean {
return this.#changed;
}
get(key: IdentifierId): RefAccessType | undefined {
const operandId = this.#temporaries.get(key)?.identifier.id ?? key;
return this.#data.get(operandId);
}
set(key: IdentifierId, value: RefAccessType): this {
const operandId = this.#temporaries.get(key)?.identifier.id ?? key;
const cur = this.#data.get(operandId);
const widenedValue = joinRefAccessTypes(value, cur ?? {kind: 'None'});
if (
!(cur == null && widenedValue.kind === 'None') &&
(cur == null || !tyEqual(cur, widenedValue))
) {
this.#changed = true;
}
this.#data.set(operandId, widenedValue);
return this;
}
}
Domain
Defined In
Source
Frequently Asked Questions
What is the Env class?
Env is a class in the react codebase, defined in compiler/packages/babel-plugin-react-compiler/src/Validation/ValidateNoRefAccessInRender.ts.
Where is Env defined?
Env is defined in compiler/packages/babel-plugin-react-compiler/src/Validation/ValidateNoRefAccessInRender.ts at line 84.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free