source: imaps-frontend/node_modules/eslint/lib/rules/no-label-var.js

main
Last change on this file was d565449, checked in by stefan toskovski <stefantoska84@…>, 4 weeks ago

Update repo after prototype presentation

  • Property mode set to 100644
File size: 2.4 KB
Line 
1/**
2 * @fileoverview Rule to flag labels that are the same as an identifier
3 * @author Ian Christian Myers
4 */
5
6"use strict";
7
8//------------------------------------------------------------------------------
9// Requirements
10//------------------------------------------------------------------------------
11
12const astUtils = require("./utils/ast-utils");
13
14//------------------------------------------------------------------------------
15// Rule Definition
16//------------------------------------------------------------------------------
17
18/** @type {import('../shared/types').Rule} */
19module.exports = {
20 meta: {
21 type: "suggestion",
22
23 docs: {
24 description: "Disallow labels that share a name with a variable",
25 recommended: false,
26 url: "https://eslint.org/docs/latest/rules/no-label-var"
27 },
28
29 schema: [],
30
31 messages: {
32 identifierClashWithLabel: "Found identifier with same name as label."
33 }
34 },
35
36 create(context) {
37 const sourceCode = context.sourceCode;
38
39 //--------------------------------------------------------------------------
40 // Helpers
41 //--------------------------------------------------------------------------
42
43 /**
44 * Check if the identifier is present inside current scope
45 * @param {Object} scope current scope
46 * @param {string} name To evaluate
47 * @returns {boolean} True if its present
48 * @private
49 */
50 function findIdentifier(scope, name) {
51 return astUtils.getVariableByName(scope, name) !== null;
52 }
53
54 //--------------------------------------------------------------------------
55 // Public API
56 //--------------------------------------------------------------------------
57
58 return {
59
60 LabeledStatement(node) {
61
62 // Fetch the innermost scope.
63 const scope = sourceCode.getScope(node);
64
65 /*
66 * Recursively find the identifier walking up the scope, starting
67 * with the innermost scope.
68 */
69 if (findIdentifier(scope, node.label.name)) {
70 context.report({
71 node,
72 messageId: "identifierClashWithLabel"
73 });
74 }
75 }
76
77 };
78
79 }
80};
Note: See TracBrowser for help on using the repository browser.