diff --git a/docs/reactivity.md b/docs/reactivity.md index 9fdee08..13964ff 100644 --- a/docs/reactivity.md +++ b/docs/reactivity.md @@ -645,6 +645,10 @@ function createFoo(v) {} const [bar, setBar] = createSignal(); createFoo([bar]); +function createFoo(v) {} +const [bar, setBar] = createSignal(); +createFoo({ onBar: () => bar() } as object); + const [bar, setBar] = createSignal(); X.createFoo(() => bar()); @@ -812,6 +816,10 @@ const m = createMemo(() => 5)! as Accessor; const m = createMemo(() => 5) satisfies Accessor; +const [s] = createSignal("a" as string); + +createFoo("a" as string); + function Component(props) { return (
diff --git a/src/rules/reactivity.ts b/src/rules/reactivity.ts index 624ecd3..b309891 100644 --- a/src/rules/reactivity.ts +++ b/src/rules/reactivity.ts @@ -843,6 +843,7 @@ export default createRule({ this.skip(); // poor-man's `findInScope`: don't enter child scopes } }, + fallback: "iteration", // Don't crash when encounter unknown node. }); }; diff --git a/test/rules/reactivity.test.ts b/test/rules/reactivity.test.ts index d0c25f1..9f4087e 100644 --- a/test/rules/reactivity.test.ts +++ b/test/rules/reactivity.test.ts @@ -158,9 +158,12 @@ export const cases = run("reactivity", rule, { `function createFoo(v) {} const [bar, setBar] = createSignal(); createFoo([bar]);`, - // `function createFoo(v) {} - // const [bar, setBar] = createSignal(); - // createFoo((() => () => bar())());`, + { + code: `function createFoo(v) {} + const [bar, setBar] = createSignal(); + createFoo({ onBar: () => bar() } as object);`, + ...tsOnlyTest, + }, `const [bar, setBar] = createSignal(); X.createFoo(() => bar());`, `const [bar, setBar] = createSignal(); @@ -308,6 +311,14 @@ export const cases = run("reactivity", rule, { code: `const m = createMemo(() => 5) satisfies Accessor;`, ...tsOnlyTest, }, + { + code: `const [s] = createSignal('a' as string)`, + ...tsOnlyTest, + }, + { + code: `createFoo('a' as string)`, + ...tsOnlyTest, + }, // functions in JSXExpressionContainers `function Component(props) { return (