From 45ee910ea27d3b4d96b45920f0a55cd6b74f4536 Mon Sep 17 00:00:00 2001 From: Sebastien Guillemot Date: Wed, 13 Nov 2019 01:34:54 +0900 Subject: [PATCH] feat: require-return-type always-enforce (#436) --- src/rules/requireReturnType.js | 7 +++++-- tests/rules/assertions/requireReturnType.js | 4 ++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/rules/requireReturnType.js b/src/rules/requireReturnType.js index b1c55706..41a90d8b 100644 --- a/src/rules/requireReturnType.js +++ b/src/rules/requireReturnType.js @@ -9,7 +9,7 @@ const schema = [ additionalProperties: false, properties: { annotateUndefined: { - enum: ['always', 'never', 'ignore'], + enum: ['always', 'never', 'ignore', 'always-enforce'], type: 'string', }, excludeArrowFunctions: { @@ -123,7 +123,10 @@ const create = (context) => { context.report(functionNode, 'Must not annotate undefined return type.'); } else if (isFunctionReturnUndefined && !isReturnTypeAnnotationUndefined && annotateUndefined === 'always') { context.report(functionNode, 'Must annotate undefined return type.'); - } else if (!isFunctionReturnUndefined && !isReturnTypeAnnotationUndefined && annotateReturn && !returnType && !shouldFilterNode(functionNode)) { + } else if ( + (annotateUndefined === 'always-enforce' || !isFunctionReturnUndefined && !isReturnTypeAnnotationUndefined) && + annotateReturn && !returnType && !shouldFilterNode(functionNode) + ) { context.report(functionNode, 'Missing return type annotation.'); } }; diff --git a/tests/rules/assertions/requireReturnType.js b/tests/rules/assertions/requireReturnType.js index e198fbbc..edbccd86 100644 --- a/tests/rules/assertions/requireReturnType.js +++ b/tests/rules/assertions/requireReturnType.js @@ -473,6 +473,7 @@ export default { 'always', 'never', 'ignore', + 'always-enforce', ], type: 'string', }, @@ -516,6 +517,7 @@ export default { 'always', 'never', 'ignore', + 'always-enforce', ], }, parentSchema: { @@ -523,6 +525,7 @@ export default { 'always', 'never', 'ignore', + 'always-enforce', ], type: 'string', }, @@ -530,6 +533,7 @@ export default { 'always', 'never', 'ignore', + 'always-enforce', ], schemaPath: '#/items/1/properties/annotateUndefined/enum', },