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,