Sha256: 3ba1610ba7cd7012749ede30e4d2cf429db014e15759f4a24c8238096df8cd92
Contents?: true
Size: 1.57 KB
Versions: 37
Compression:
Stored size: 1.57 KB
Contents
/** * @fileoverview Rule to disallow returning value from constructor. * @author Pig Fang <https://github.com/g-plane> */ "use strict"; //------------------------------------------------------------------------------ // Rule Definition //------------------------------------------------------------------------------ /** @type {import('../shared/types').Rule} */ module.exports = { meta: { type: "problem", docs: { description: "Disallow returning value from constructor", recommended: false, url: "https://eslint.org/docs/latest/rules/no-constructor-return" }, schema: {}, fixable: null, messages: { unexpected: "Unexpected return statement in constructor." } }, create(context) { const stack = []; return { onCodePathStart(_, node) { stack.push(node); }, onCodePathEnd() { stack.pop(); }, ReturnStatement(node) { const last = stack[stack.length - 1]; if (!last.parent) { return; } if ( last.parent.type === "MethodDefinition" && last.parent.kind === "constructor" && (node.parent.parent === last || node.argument) ) { context.report({ node, messageId: "unexpected" }); } } }; } };
Version data entries
37 entries across 27 versions & 2 rubygems