Sha256: eb3c1ef872b75ebc3ba03b8d3bae2d6f62bcaa17f51b1d18ce8d8e0c6de901fb

Contents?: true

Size: 1.56 KB

Versions: 6

Compression:

Stored size: 1.56 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/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

6 entries across 6 versions & 1 rubygems

Version Path
decidim-0.27.1 packages/webpacker/node_modules/eslint/lib/rules/no-constructor-return.js
decidim-0.26.4 packages/webpacker/node_modules/eslint/lib/rules/no-constructor-return.js
decidim-0.27.0 packages/webpacker/node_modules/eslint/lib/rules/no-constructor-return.js
decidim-0.26.3 packages/webpacker/node_modules/eslint/lib/rules/no-constructor-return.js
decidim-0.27.0.rc2 packages/webpacker/node_modules/eslint/lib/rules/no-constructor-return.js
decidim-0.27.0.rc1 packages/webpacker/node_modules/eslint/lib/rules/no-constructor-return.js