From 26fa4a0920319f93532b01072369b270c343d9ea Mon Sep 17 00:00:00 2001 From: Manu MA Date: Mon, 17 Apr 2023 11:48:37 +0200 Subject: [PATCH] fix(eslint): allow use method inside other use methods (#3804) fixes #3787 --- packages/eslint-plugin-qwik/qwik.unit.ts | 27 +++++++++++++++++++ .../eslint-plugin-qwik/src/useMethodUsage.ts | 4 +-- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/packages/eslint-plugin-qwik/qwik.unit.ts b/packages/eslint-plugin-qwik/qwik.unit.ts index 3a10e41cd4e..1ec052a74b2 100644 --- a/packages/eslint-plugin-qwik/qwik.unit.ts +++ b/packages/eslint-plugin-qwik/qwik.unit.ts @@ -28,6 +28,33 @@ test('no-use-after-await', () => { ruleTester.run('my-rule', rules['use-method-usage'] as any, { valid: [ ` +export function useSession1() { + useContext(); +} +export function useSession2() { + return useContext(); +} +export function useSession3() { + return useContext().value; +} +`, + ` +export const useSession1 = () => { + useContext(); +} + +export const useSession2 = () => { + return useContext(); +} + +export const useSession3 = () => useContext(); + +export const useSession4 = () => useContext().value; + +export const useSession5 = () => useContext().value + 10; + +`, + ` export const HelloWorld = component$(async () => { useMethod(); await something(); diff --git a/packages/eslint-plugin-qwik/src/useMethodUsage.ts b/packages/eslint-plugin-qwik/src/useMethodUsage.ts index bce06791438..beb1c8a0b1a 100644 --- a/packages/eslint-plugin-qwik/src/useMethodUsage.ts +++ b/packages/eslint-plugin-qwik/src/useMethodUsage.ts @@ -56,6 +56,7 @@ export const useMethodUsage: Rule.RuleModule = { case 'MemberExpression': case 'BinaryExpression': case 'UnaryExpression': + case 'ReturnStatement': case 'BlockStatement': break; case 'ArrowFunctionExpression': @@ -87,9 +88,8 @@ export const useMethodUsage: Rule.RuleModule = { node, messageId: 'use-wrong-function', }); - return; } - break; + return; default: context.report({ node,