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

Version Path
immosquare-cleaner-0.1.32 node_modules/eslint/lib/rules/no-constructor-return.js
immosquare-cleaner-0.1.32 node_modules/@eslint-community/eslint-utils/node_modules/eslint/lib/rules/no-constructor-return.js
immosquare-cleaner-0.1.31 node_modules/eslint/lib/rules/no-constructor-return.js
immosquare-cleaner-0.1.31 node_modules/@eslint-community/eslint-utils/node_modules/eslint/lib/rules/no-constructor-return.js
immosquare-cleaner-0.1.30 node_modules/eslint/lib/rules/no-constructor-return.js
immosquare-cleaner-0.1.30 node_modules/@eslint-community/eslint-utils/node_modules/eslint/lib/rules/no-constructor-return.js
immosquare-cleaner-0.1.29 node_modules/eslint/lib/rules/no-constructor-return.js
immosquare-cleaner-0.1.29 node_modules/@eslint-community/eslint-utils/node_modules/eslint/lib/rules/no-constructor-return.js
immosquare-cleaner-0.1.28 node_modules/eslint/lib/rules/no-constructor-return.js
immosquare-cleaner-0.1.28 node_modules/@eslint-community/eslint-utils/node_modules/eslint/lib/rules/no-constructor-return.js
immosquare-cleaner-0.1.27 node_modules/eslint/lib/rules/no-constructor-return.js
immosquare-cleaner-0.1.27 node_modules/@eslint-community/eslint-utils/node_modules/eslint/lib/rules/no-constructor-return.js
immosquare-cleaner-0.1.26 node_modules/eslint/lib/rules/no-constructor-return.js
immosquare-cleaner-0.1.26 node_modules/@eslint-community/eslint-utils/node_modules/eslint/lib/rules/no-constructor-return.js
immosquare-cleaner-0.1.25 node_modules/@eslint-community/eslint-utils/node_modules/eslint/lib/rules/no-constructor-return.js
immosquare-cleaner-0.1.25 node_modules/eslint/lib/rules/no-constructor-return.js
immosquare-cleaner-0.1.24 node_modules/@eslint-community/eslint-utils/node_modules/eslint/lib/rules/no-constructor-return.js
immosquare-cleaner-0.1.24 node_modules/eslint/lib/rules/no-constructor-return.js
immosquare-cleaner-0.1.23 node_modules/eslint/lib/rules/no-constructor-return.js
immosquare-cleaner-0.1.23 node_modules/@eslint-community/eslint-utils/node_modules/eslint/lib/rules/no-constructor-return.js