@samitouri / QOS-React / commits / 08a8891245

Test: unknown hooks should not assert effects

Mofei Zhang committed May 23, 2023 at 13:55 UTC 08a88912458d66a47e82d0e67fc739adbd837ac3
4 files changed +44
compiler/forget/packages/snap/src/compiler-worker.ts
+5
@@ -94,6 +94,7 @@ export async function compile(
94 let panicOnBailout = true;
95 let memoizeJsxElements = true;
96 let enableAssumeHooksFollowRulesOfReact = false;
97 + let enableTreatHooksAsFunctions = false;
98 if (firstLine.indexOf("@forgetDirective") !== -1) {
99 enableOnlyOnUseForgetDirective = true;
100 }
@@ -124,6 +125,9 @@ export async function compile(
125 if (firstLine.indexOf("@enableAssumeHooksFollowRulesOfReact true") !== -1) {
126 enableAssumeHooksFollowRulesOfReact = true;
127 }
128 + if (firstLine.indexOf("@enableTreatHooksAsFunctions true") !== -1) {
129 + enableTreatHooksAsFunctions = true;
130 + }
131
132 const language = parseLanguage(firstLine);
133
@@ -144,6 +148,7 @@ export async function compile(
148 enableAssumeHooksFollowRulesOfReact,
149 inlineUseMemo: true,
150 memoizeJsxElements,
151 + enableTreatHooksAsFunctions,
152 },
153 logger: null,
154 gating,
compiler/forget/src/__tests__/fixtures/compiler/unknown-hooks-do-not-assert.expect.md new
+27
@@ -0,0 +1,27 @@
1 +
2 +## Input
3 +
4 +```javascript
5 +// @enableTreatHooksAsFunctions true
6 +// (enableAssumeHooksFollowRulesOfReact=false)
7 +function Component(props) {
8 + const x = useUnknownHook1(props);
9 + const y = useUnknownHook2(x);
10 + return y;
11 +}
12 +
13 +```
14 +
15 +## Code
16 +
17 +```javascript
18 +// @enableTreatHooksAsFunctions true
19 +// (enableAssumeHooksFollowRulesOfReact=false)
20 +function Component(props) {
21 + const x = useUnknownHook1(props);
22 + const y = useUnknownHook2(x);
23 + return y;
24 +}
25 +
26 +```
27 +
\ No newline at end of file
compiler/forget/src/__tests__/fixtures/compiler/unknown-hooks-do-not-assert.js new
+7
@@ -0,0 +1,7 @@
1 +// @enableTreatHooksAsFunctions true
2 +// (enableAssumeHooksFollowRulesOfReact=false)
3 +function Component(props) {
4 + const x = useUnknownHook1(props);
5 + const y = useUnknownHook2(x);
6 + return y;
7 +}
compiler/forget/src/__tests__/test-utils/generateTestsFromFixtures.ts
+5
@@ -103,6 +103,7 @@ export default function generateTestsFromFixtures(
103 let panicOnBailout = true;
104 let memoizeJsxElements = true;
105 let enableAssumeHooksFollowRulesOfReact = false;
106 + let enableTreatHooksAsFunctions = false;
107
108 if (inputFile != null) {
109 input = fs.readFileSync(inputFile, "utf8");
@@ -152,6 +153,9 @@ export default function generateTestsFromFixtures(
153 ) {
154 enableAssumeHooksFollowRulesOfReact = true;
155 }
156 + if (lines[0]!.indexOf("@enableTreatHooksAsFunctions true") !== -1) {
157 + enableTreatHooksAsFunctions = true;
158 + }
159 }
160
161 testCommand(basename, () => {
@@ -162,6 +166,7 @@ export default function generateTestsFromFixtures(
166 inlineUseMemo,
167 memoizeJsxElements,
168 enableAssumeHooksFollowRulesOfReact,
169 + enableTreatHooksAsFunctions,
170 },
171 logger: null,
172 debug,