[compiler][ez] Add validation for auto-deps config (#31813)
numRequiredArgs has to be more than 0 and the pass depends on that --
Jordan Brown committed
Mar 3, 2025 at 14:39 UTC
a1f157e9a9b7f90fce9d696add6cee04a6fb5260
2 files changed
+19
-1
compiler/packages/babel-plugin-react-compiler/src/HIR/Environment.ts
+1
-1
@@ -285,7 +285,7 @@ const EnvironmentConfigSchema = z.object({
285
z.array(
286
z.object({
287
function: ExternalFunctionSchema,
288
- numRequiredArgs: z.number(),
288
+ numRequiredArgs: z.number().min(1, 'numRequiredArgs must be > 0'),
289
}),
290
),
291
)
compiler/packages/babel-plugin-react-compiler/src/__tests__/envConfig-test.ts
+18
@@ -24,6 +24,24 @@ describe('parseConfigPragma()', () => {
24
);
25
});
26
27
+ it('effect autodeps config must have at least 1 required argument', () => {
28
+ expect(() => {
29
+ validateEnvironmentConfig({
30
+ inferEffectDependencies: [
31
+ {
32
+ function: {
33
+ source: 'react',
34
+ importSpecifierName: 'useEffect',
35
+ },
36
+ numRequiredArgs: 0,
37
+ },
38
+ ],
39
+ } as any);
40
+ }).toThrowErrorMatchingInlineSnapshot(
41
+ `"InvalidConfig: Could not validate environment config. Update React Compiler config to fix the error. Validation error: numRequiredArgs must be > 0 at "inferEffectDependencies[0].numRequiredArgs""`,
42
+ );
43
+ });
44
+
45
it('can parse stringy enums', () => {
46
const stringyHook = {
47
effectKind: 'freeze',