From 328ea7f2af6aa74e72ceba5d1d16f0528f618fcf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bence=20D=C3=A1nyi?= Date: Fri, 24 May 2019 18:11:39 +0200 Subject: [PATCH] fix(eslint-plugin): [promise-function-async] allow any as return value --- .../eslint-plugin/src/rules/promise-function-async.ts | 5 +++++ .../tests/rules/promise-function-async.test.ts | 10 ++++++++++ 2 files changed, 15 insertions(+) diff --git a/packages/eslint-plugin/src/rules/promise-function-async.ts b/packages/eslint-plugin/src/rules/promise-function-async.ts index 885580c493fa..78854f58bfaa 100644 --- a/packages/eslint-plugin/src/rules/promise-function-async.ts +++ b/packages/eslint-plugin/src/rules/promise-function-async.ts @@ -1,3 +1,5 @@ +import ts from 'typescript'; +import { isTypeFlagSet } from 'tsutils'; import { TSESTree } from '@typescript-eslint/experimental-utils'; import * as util from '../util'; @@ -90,6 +92,9 @@ export default util.createRule({ } const returnType = checker.getReturnTypeOfSignature(signatures[0]); + if (isTypeFlagSet(returnType, ts.TypeFlags.Any | ts.TypeFlags.Unknown)) { + return; + } if (!util.containsTypeByName(returnType, allAllowedPromiseNames)) { return; } diff --git a/packages/eslint-plugin/tests/rules/promise-function-async.test.ts b/packages/eslint-plugin/tests/rules/promise-function-async.test.ts index 3910cea56042..4da2cf4109d8 100644 --- a/packages/eslint-plugin/tests/rules/promise-function-async.test.ts +++ b/packages/eslint-plugin/tests/rules/promise-function-async.test.ts @@ -16,6 +16,16 @@ const ruleTester = new RuleTester({ ruleTester.run('promise-function-async', rule, { valid: [ ` +function returnsAny(): any { + return 1; +} + `, + ` +function returnsUnknown(): unknown { + return 1; +} + `, + ` const nonAsyncNonPromiseArrowFunction = (n: number) => n; `, `