[be] Dont copy default config values if key is present
Joe Savona committed
Oct 3, 2023 at 16:57 UTC
91dab8e19c984f81e7fc2b5139a5427c7f284821
1 file changed
+14
-5
compiler/packages/babel-plugin-react-forget/src/HIR/Environment.ts
+14
-5
@@ -246,7 +246,7 @@ export type EnvironmentConfig = {
246
bailoutOnHoleyArrays: boolean;
247
};
248
249
-const DEFAULT_ENVIRONMENT_CONFIG: EnvironmentConfig = {
249
+const DEFAULT_ENVIRONMENT_CONFIG: Readonly<EnvironmentConfig> = {
250
customHooks: null,
251
252
enableTreatHooksAsFunctions: true,
@@ -269,6 +269,10 @@ const DEFAULT_ENVIRONMENT_CONFIG: EnvironmentConfig = {
269
validateRefAccessDuringRender: false,
270
};
271
272
+function isEnvironmentConfigKey(key: string): key is keyof EnvironmentConfig {
273
+ return Object.prototype.hasOwnProperty.call(DEFAULT_ENVIRONMENT_CONFIG, key);
274
+}
275
+
276
export type PartialEnvironmentConfig = Partial<EnvironmentConfig>;
277
278
export class Environment {
@@ -287,10 +291,15 @@ export class Environment {
291
) {
292
this.#shapes = new Map(DEFAULT_SHAPES);
293
const config: EnvironmentConfig = { ...DEFAULT_ENVIRONMENT_CONFIG };
290
- for (const rawKey in DEFAULT_ENVIRONMENT_CONFIG) {
291
- const key = rawKey as keyof EnvironmentConfig;
292
- const value = partialConfig?.[key] ?? DEFAULT_ENVIRONMENT_CONFIG[key];
293
- config[key] = value as any;
294
+ if (partialConfig != null) {
295
+ for (const key of Object.keys(DEFAULT_ENVIRONMENT_CONFIG)) {
296
+ if (!isEnvironmentConfigKey(key)) {
297
+ continue;
298
+ }
299
+ if (Object.prototype.hasOwnProperty.call(partialConfig, key)) {
300
+ config[key] = partialConfig[key] as any; // we know the key is present from hasOwnProperty
301
+ }
302
+ }
303
}
304
this.config = config;
305