eslint 0.22.0 → 0.24.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (201) hide show
  1. package/LICENSE +20 -20
  2. package/README.md +111 -95
  3. package/bin/eslint.js +41 -41
  4. package/conf/environments.js +87 -81
  5. package/conf/eslint.json +186 -179
  6. package/lib/api.js +13 -12
  7. package/lib/cli-engine.js +441 -451
  8. package/lib/cli.js +196 -196
  9. package/lib/config-initializer.js +145 -145
  10. package/lib/config-validator.js +110 -110
  11. package/lib/config.js +428 -416
  12. package/lib/eslint.js +1072 -1073
  13. package/lib/file-finder.js +167 -167
  14. package/lib/formatters/checkstyle.js +68 -68
  15. package/lib/formatters/compact.js +53 -53
  16. package/lib/formatters/jslint-xml.js +40 -40
  17. package/lib/formatters/junit.js +63 -63
  18. package/lib/formatters/stylish.js +90 -90
  19. package/lib/formatters/tap.js +86 -86
  20. package/lib/ignored-paths.js +137 -137
  21. package/lib/load-rules.js +39 -39
  22. package/lib/options.js +132 -126
  23. package/lib/rule-context.js +107 -107
  24. package/lib/rules/accessor-pairs.js +65 -65
  25. package/lib/rules/array-bracket-spacing.js +180 -0
  26. package/lib/rules/block-scoped-var.js +339 -320
  27. package/lib/rules/brace-style.js +228 -228
  28. package/lib/rules/camelcase.js +111 -111
  29. package/lib/rules/comma-dangle.js +67 -64
  30. package/lib/rules/comma-spacing.js +191 -191
  31. package/lib/rules/comma-style.js +195 -195
  32. package/lib/rules/complexity.js +94 -94
  33. package/lib/rules/computed-property-spacing.js +144 -0
  34. package/lib/rules/consistent-return.js +75 -75
  35. package/lib/rules/consistent-this.js +119 -119
  36. package/lib/rules/constructor-super.js +108 -0
  37. package/lib/rules/curly.js +109 -109
  38. package/lib/rules/default-case.js +66 -66
  39. package/lib/rules/dot-location.js +63 -63
  40. package/lib/rules/dot-notation.js +119 -119
  41. package/lib/rules/eol-last.js +38 -38
  42. package/lib/rules/eqeqeq.js +96 -96
  43. package/lib/rules/func-names.js +45 -45
  44. package/lib/rules/func-style.js +49 -49
  45. package/lib/rules/generator-star-spacing.js +104 -87
  46. package/lib/rules/generator-star.js +76 -76
  47. package/lib/rules/global-strict.js +49 -49
  48. package/lib/rules/guard-for-in.js +32 -32
  49. package/lib/rules/handle-callback-err.js +81 -124
  50. package/lib/rules/indent.js +486 -486
  51. package/lib/rules/key-spacing.js +325 -325
  52. package/lib/rules/linebreak-style.js +44 -44
  53. package/lib/rules/lines-around-comment.js +228 -160
  54. package/lib/rules/max-depth.js +89 -89
  55. package/lib/rules/max-len.js +76 -76
  56. package/lib/rules/max-nested-callbacks.js +73 -73
  57. package/lib/rules/max-params.js +45 -45
  58. package/lib/rules/max-statements.js +61 -61
  59. package/lib/rules/new-cap.js +224 -224
  60. package/lib/rules/new-parens.js +29 -29
  61. package/lib/rules/newline-after-var.js +127 -127
  62. package/lib/rules/no-alert.js +153 -153
  63. package/lib/rules/no-array-constructor.js +31 -31
  64. package/lib/rules/no-bitwise.js +57 -57
  65. package/lib/rules/no-caller.js +29 -29
  66. package/lib/rules/no-catch-shadow.js +52 -52
  67. package/lib/rules/no-comma-dangle.js +45 -45
  68. package/lib/rules/no-cond-assign.js +123 -123
  69. package/lib/rules/no-console.js +27 -27
  70. package/lib/rules/no-constant-condition.js +73 -73
  71. package/lib/rules/no-continue.js +23 -23
  72. package/lib/rules/no-control-regex.js +58 -58
  73. package/lib/rules/no-debugger.js +22 -22
  74. package/lib/rules/no-delete-var.js +25 -25
  75. package/lib/rules/no-div-regex.js +27 -27
  76. package/lib/rules/no-dupe-args.js +89 -85
  77. package/lib/rules/no-dupe-keys.js +43 -43
  78. package/lib/rules/no-duplicate-case.js +67 -67
  79. package/lib/rules/no-else-return.js +125 -125
  80. package/lib/rules/no-empty-character-class.js +43 -43
  81. package/lib/rules/no-empty-class.js +45 -45
  82. package/lib/rules/no-empty-label.js +27 -27
  83. package/lib/rules/no-empty.js +49 -49
  84. package/lib/rules/no-eq-null.js +29 -29
  85. package/lib/rules/no-eval.js +26 -26
  86. package/lib/rules/no-ex-assign.js +42 -42
  87. package/lib/rules/no-extend-native.js +103 -103
  88. package/lib/rules/no-extra-bind.js +81 -81
  89. package/lib/rules/no-extra-boolean-cast.js +71 -71
  90. package/lib/rules/no-extra-parens.js +368 -355
  91. package/lib/rules/no-extra-semi.js +70 -23
  92. package/lib/rules/no-extra-strict.js +86 -86
  93. package/lib/rules/no-fallthrough.js +97 -97
  94. package/lib/rules/no-floating-decimal.js +30 -30
  95. package/lib/rules/no-func-assign.js +83 -83
  96. package/lib/rules/no-implied-eval.js +76 -76
  97. package/lib/rules/no-inline-comments.js +49 -49
  98. package/lib/rules/no-inner-declarations.js +78 -78
  99. package/lib/rules/no-invalid-regexp.js +53 -53
  100. package/lib/rules/no-irregular-whitespace.js +135 -135
  101. package/lib/rules/no-iterator.js +28 -28
  102. package/lib/rules/no-label-var.js +64 -64
  103. package/lib/rules/no-labels.js +44 -44
  104. package/lib/rules/no-lone-blocks.js +106 -27
  105. package/lib/rules/no-lonely-if.js +30 -30
  106. package/lib/rules/no-loop-func.js +58 -58
  107. package/lib/rules/no-mixed-requires.js +165 -165
  108. package/lib/rules/no-mixed-spaces-and-tabs.js +74 -74
  109. package/lib/rules/no-multi-spaces.js +119 -119
  110. package/lib/rules/no-multi-str.js +43 -43
  111. package/lib/rules/no-multiple-empty-lines.js +98 -98
  112. package/lib/rules/no-native-reassign.js +62 -62
  113. package/lib/rules/no-negated-in-lhs.js +25 -25
  114. package/lib/rules/no-nested-ternary.js +24 -24
  115. package/lib/rules/no-new-func.js +25 -25
  116. package/lib/rules/no-new-object.js +25 -25
  117. package/lib/rules/no-new-require.js +25 -25
  118. package/lib/rules/no-new-wrappers.js +26 -26
  119. package/lib/rules/no-new.js +27 -27
  120. package/lib/rules/no-obj-calls.js +28 -28
  121. package/lib/rules/no-octal-escape.js +39 -39
  122. package/lib/rules/no-octal.js +25 -25
  123. package/lib/rules/no-param-reassign.js +87 -87
  124. package/lib/rules/no-path-concat.js +39 -39
  125. package/lib/rules/no-plusplus.js +24 -24
  126. package/lib/rules/no-process-env.js +30 -30
  127. package/lib/rules/no-process-exit.js +33 -33
  128. package/lib/rules/no-proto.js +28 -28
  129. package/lib/rules/no-redeclare.js +68 -68
  130. package/lib/rules/no-regex-spaces.js +35 -35
  131. package/lib/rules/no-reserved-keys.js +56 -56
  132. package/lib/rules/no-restricted-modules.js +85 -85
  133. package/lib/rules/no-return-assign.js +53 -24
  134. package/lib/rules/no-script-url.js +34 -34
  135. package/lib/rules/no-self-compare.js +29 -29
  136. package/lib/rules/no-sequences.js +94 -94
  137. package/lib/rules/no-shadow-restricted-names.js +51 -51
  138. package/lib/rules/no-shadow.js +181 -136
  139. package/lib/rules/no-space-before-semi.js +98 -98
  140. package/lib/rules/no-spaced-func.js +37 -37
  141. package/lib/rules/no-sparse-arrays.js +33 -33
  142. package/lib/rules/no-sync.js +30 -30
  143. package/lib/rules/no-ternary.js +24 -24
  144. package/lib/rules/no-this-before-super.js +144 -0
  145. package/lib/rules/no-throw-literal.js +33 -33
  146. package/lib/rules/no-trailing-spaces.js +74 -63
  147. package/lib/rules/no-undef-init.js +28 -28
  148. package/lib/rules/no-undef.js +92 -92
  149. package/lib/rules/no-undefined.js +27 -27
  150. package/lib/rules/no-underscore-dangle.js +73 -73
  151. package/lib/rules/no-unexpected-multiline.js +58 -0
  152. package/lib/rules/no-unneeded-ternary.js +48 -48
  153. package/lib/rules/no-unreachable.js +98 -98
  154. package/lib/rules/no-unused-expressions.js +76 -76
  155. package/lib/rules/no-unused-vars.js +252 -250
  156. package/lib/rules/no-use-before-define.js +105 -105
  157. package/lib/rules/no-var.js +26 -26
  158. package/lib/rules/no-void.js +28 -28
  159. package/lib/rules/no-warning-comments.js +102 -102
  160. package/lib/rules/no-with.js +22 -22
  161. package/lib/rules/no-wrap-func.js +65 -65
  162. package/lib/rules/object-curly-spacing.js +231 -206
  163. package/lib/rules/object-shorthand.js +74 -73
  164. package/lib/rules/one-var.js +311 -304
  165. package/lib/rules/operator-assignment.js +118 -118
  166. package/lib/rules/operator-linebreak.js +114 -114
  167. package/lib/rules/padded-blocks.js +98 -98
  168. package/lib/rules/prefer-const.js +91 -0
  169. package/lib/rules/quote-props.js +72 -72
  170. package/lib/rules/quotes.js +92 -92
  171. package/lib/rules/radix.js +41 -41
  172. package/lib/rules/semi-spacing.js +167 -167
  173. package/lib/rules/semi.js +136 -136
  174. package/lib/rules/sort-vars.js +49 -49
  175. package/lib/rules/space-after-function-name.js +49 -49
  176. package/lib/rules/space-after-keywords.js +82 -82
  177. package/lib/rules/space-before-blocks.js +91 -91
  178. package/lib/rules/space-before-function-paren.js +139 -139
  179. package/lib/rules/space-before-function-parentheses.js +139 -139
  180. package/lib/rules/space-in-brackets.js +305 -305
  181. package/lib/rules/space-in-parens.js +281 -281
  182. package/lib/rules/space-infix-ops.js +106 -106
  183. package/lib/rules/space-return-throw-case.js +38 -38
  184. package/lib/rules/space-unary-ops.js +124 -133
  185. package/lib/rules/spaced-comment.js +143 -0
  186. package/lib/rules/spaced-line-comment.js +89 -89
  187. package/lib/rules/strict.js +242 -242
  188. package/lib/rules/use-isnan.js +26 -26
  189. package/lib/rules/valid-jsdoc.js +215 -215
  190. package/lib/rules/valid-typeof.js +42 -42
  191. package/lib/rules/vars-on-top.js +115 -115
  192. package/lib/rules/wrap-iife.js +48 -48
  193. package/lib/rules/wrap-regex.js +38 -38
  194. package/lib/rules/yoda.js +242 -225
  195. package/lib/rules.js +88 -88
  196. package/lib/timing.js +109 -109
  197. package/lib/token-store.js +201 -201
  198. package/lib/util/traverse.js +105 -105
  199. package/lib/util.js +125 -85
  200. package/package.json +6 -6
  201. package/CHANGELOG.md +0 -1638
@@ -1,53 +1,53 @@
1
- /**
2
- * @fileoverview Validate strings passed to the RegExp constructor
3
- * @author Michael Ficarra
4
- * @copyright 2014 Michael Ficarra. All rights reserved.
5
- */
6
- "use strict";
7
-
8
- //------------------------------------------------------------------------------
9
- // Requirements
10
- //------------------------------------------------------------------------------
11
-
12
- var espree = require("espree");
13
-
14
- //------------------------------------------------------------------------------
15
- // Rule Definition
16
- //------------------------------------------------------------------------------
17
-
18
- module.exports = function(context) {
19
-
20
- function isString(node) {
21
- return node && node.type === "Literal" && typeof node.value === "string";
22
- }
23
-
24
- function check(node) {
25
- if (node.callee.type === "Identifier" && node.callee.name === "RegExp" && isString(node.arguments[0])) {
26
- var flags = isString(node.arguments[1]) ? node.arguments[1].value : "";
27
-
28
- try {
29
- void new RegExp(node.arguments[0].value);
30
- } catch(e) {
31
- context.report(node, e.message);
32
- }
33
-
34
- if (flags) {
35
-
36
- try {
37
- espree.parse("/./" + flags, { ecmaFeatures: context.ecmaFeatures });
38
- } catch (ex) {
39
- context.report(node, "Invalid flags supplied to RegExp constructor '" + flags + "'");
40
- }
41
- }
42
-
43
- }
44
- }
45
-
46
- return {
47
- "CallExpression": check,
48
- "NewExpression": check
49
- };
50
-
51
- };
52
-
53
- module.exports.schema = [];
1
+ /**
2
+ * @fileoverview Validate strings passed to the RegExp constructor
3
+ * @author Michael Ficarra
4
+ * @copyright 2014 Michael Ficarra. All rights reserved.
5
+ */
6
+ "use strict";
7
+
8
+ //------------------------------------------------------------------------------
9
+ // Requirements
10
+ //------------------------------------------------------------------------------
11
+
12
+ var espree = require("espree");
13
+
14
+ //------------------------------------------------------------------------------
15
+ // Rule Definition
16
+ //------------------------------------------------------------------------------
17
+
18
+ module.exports = function(context) {
19
+
20
+ function isString(node) {
21
+ return node && node.type === "Literal" && typeof node.value === "string";
22
+ }
23
+
24
+ function check(node) {
25
+ if (node.callee.type === "Identifier" && node.callee.name === "RegExp" && isString(node.arguments[0])) {
26
+ var flags = isString(node.arguments[1]) ? node.arguments[1].value : "";
27
+
28
+ try {
29
+ void new RegExp(node.arguments[0].value);
30
+ } catch(e) {
31
+ context.report(node, e.message);
32
+ }
33
+
34
+ if (flags) {
35
+
36
+ try {
37
+ espree.parse("/./" + flags, { ecmaFeatures: context.ecmaFeatures });
38
+ } catch (ex) {
39
+ context.report(node, "Invalid flags supplied to RegExp constructor '" + flags + "'");
40
+ }
41
+ }
42
+
43
+ }
44
+ }
45
+
46
+ return {
47
+ "CallExpression": check,
48
+ "NewExpression": check
49
+ };
50
+
51
+ };
52
+
53
+ module.exports.schema = [];
@@ -1,135 +1,135 @@
1
- /**
2
- * @fileoverview Rule to disalow whitespace that is not a tab or space, whitespace inside strings and comments are allowed
3
- * @author Jonathan Kingston
4
- * @copyright 2014 Jonathan Kingston. All rights reserved.
5
- */
6
-
7
- "use strict";
8
-
9
- //------------------------------------------------------------------------------
10
- // Rule Definition
11
- //------------------------------------------------------------------------------
12
-
13
- module.exports = function(context) {
14
-
15
- var irregularWhitespace = /[\u0085\u00A0\ufeff\f\v\u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u202f\u205f\u3000]+/mg,
16
- irregularLineTerminators = /[\u2028\u2029]/mg;
17
-
18
- // Module store of errors that we have found
19
- var errors = [];
20
-
21
- /**
22
- * Removes errors that occur inside a string node
23
- * @param {ASTNode} node to check for matching errors.
24
- * @returns {void}
25
- * @private
26
- */
27
- function removeStringError(node) {
28
- var locStart = node.loc.start;
29
- var locEnd = node.loc.end;
30
-
31
- errors = errors.filter(function (error) {
32
- var errorLoc = error[1];
33
- if (errorLoc.line >= locStart.line && errorLoc.line <= locEnd.line) {
34
- if (errorLoc.column >= locStart.column && (errorLoc.column <= locEnd.column || errorLoc.line < locEnd.line)) {
35
- return false;
36
- }
37
- }
38
- return true;
39
- });
40
- }
41
-
42
- /**
43
- * Checks nodes for errors that we are choosing to ignore and calls the relevant methods to remove the errors
44
- * @param {ASTNode} node to check for matching errors.
45
- * @returns {void}
46
- * @private
47
- */
48
- function removeInvalidNodeErrors(node) {
49
- if (typeof node.value === "string") {
50
- // If we have irregular characters remove them from the errors list
51
- if (node.raw.match(irregularWhitespace) || node.raw.match(irregularLineTerminators)) {
52
- removeStringError(node);
53
- }
54
- }
55
- }
56
-
57
- /**
58
- * Checks the program source for irregular whitespace
59
- * @param {ASTNode} node The program node
60
- * @returns {void}
61
- * @private
62
- */
63
- function checkForIrregularWhitespace(node) {
64
- var sourceLines = context.getSourceLines();
65
-
66
- sourceLines.forEach(function (sourceLine, lineIndex) {
67
- var lineNumber = lineIndex + 1,
68
- location,
69
- match;
70
-
71
- while ((match = irregularWhitespace.exec(sourceLine)) !== null) {
72
- location = {
73
- line: lineNumber,
74
- column: match.index
75
- };
76
-
77
- errors.push([node, location, "Irregular whitespace not allowed"]);
78
- }
79
- });
80
- }
81
-
82
- /**
83
- * Checks the program source for irregular line terminators
84
- * @param {ASTNode} node The program node
85
- * @returns {void}
86
- * @private
87
- */
88
- function checkForIrregularLineTerminators(node) {
89
- var source = context.getSource(),
90
- sourceLines = context.getSourceLines(),
91
- linebreaks = source.match(/\r\n|\r|\n|\u2028|\u2029/g),
92
- lastLineIndex = -1,
93
- lineIndex,
94
- location,
95
- match;
96
-
97
- while ((match = irregularLineTerminators.exec(source)) !== null) {
98
- lineIndex = linebreaks.indexOf(match[0], lastLineIndex + 1) || 0;
99
-
100
- location = {
101
- line: lineIndex + 1,
102
- column: sourceLines[lineIndex].length
103
- };
104
-
105
- errors.push([node, location, "Irregular whitespace not allowed"]);
106
- lastLineIndex = lineIndex;
107
- }
108
- }
109
-
110
- return {
111
- "Program": function (node) {
112
- /**
113
- * As we can easily fire warnings for all white space issues with all the source its simpler to fire them here
114
- * This means we can check all the application code without having to worry about issues caused in the parser tokens
115
- * When writing this code also evaluating per node was missing out connecting tokens in some cases
116
- * We can later filter the errors when they are found to be not an issue in nodes we don't care about
117
- */
118
-
119
- checkForIrregularWhitespace(node);
120
- checkForIrregularLineTerminators(node);
121
- },
122
-
123
- "Identifier": removeInvalidNodeErrors,
124
- "Literal": removeInvalidNodeErrors,
125
- "Program:exit": function () {
126
-
127
- // If we have any errors remaining report on them
128
- errors.forEach(function (error) {
129
- context.report.apply(this, error);
130
- });
131
- }
132
- };
133
- };
134
-
135
- module.exports.schema = [];
1
+ /**
2
+ * @fileoverview Rule to disalow whitespace that is not a tab or space, whitespace inside strings and comments are allowed
3
+ * @author Jonathan Kingston
4
+ * @copyright 2014 Jonathan Kingston. All rights reserved.
5
+ */
6
+
7
+ "use strict";
8
+
9
+ //------------------------------------------------------------------------------
10
+ // Rule Definition
11
+ //------------------------------------------------------------------------------
12
+
13
+ module.exports = function(context) {
14
+
15
+ var irregularWhitespace = /[\u0085\u00A0\ufeff\f\v\u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u202f\u205f\u3000]+/mg,
16
+ irregularLineTerminators = /[\u2028\u2029]/mg;
17
+
18
+ // Module store of errors that we have found
19
+ var errors = [];
20
+
21
+ /**
22
+ * Removes errors that occur inside a string node
23
+ * @param {ASTNode} node to check for matching errors.
24
+ * @returns {void}
25
+ * @private
26
+ */
27
+ function removeStringError(node) {
28
+ var locStart = node.loc.start;
29
+ var locEnd = node.loc.end;
30
+
31
+ errors = errors.filter(function (error) {
32
+ var errorLoc = error[1];
33
+ if (errorLoc.line >= locStart.line && errorLoc.line <= locEnd.line) {
34
+ if (errorLoc.column >= locStart.column && (errorLoc.column <= locEnd.column || errorLoc.line < locEnd.line)) {
35
+ return false;
36
+ }
37
+ }
38
+ return true;
39
+ });
40
+ }
41
+
42
+ /**
43
+ * Checks nodes for errors that we are choosing to ignore and calls the relevant methods to remove the errors
44
+ * @param {ASTNode} node to check for matching errors.
45
+ * @returns {void}
46
+ * @private
47
+ */
48
+ function removeInvalidNodeErrors(node) {
49
+ if (typeof node.value === "string") {
50
+ // If we have irregular characters remove them from the errors list
51
+ if (node.raw.match(irregularWhitespace) || node.raw.match(irregularLineTerminators)) {
52
+ removeStringError(node);
53
+ }
54
+ }
55
+ }
56
+
57
+ /**
58
+ * Checks the program source for irregular whitespace
59
+ * @param {ASTNode} node The program node
60
+ * @returns {void}
61
+ * @private
62
+ */
63
+ function checkForIrregularWhitespace(node) {
64
+ var sourceLines = context.getSourceLines();
65
+
66
+ sourceLines.forEach(function (sourceLine, lineIndex) {
67
+ var lineNumber = lineIndex + 1,
68
+ location,
69
+ match;
70
+
71
+ while ((match = irregularWhitespace.exec(sourceLine)) !== null) {
72
+ location = {
73
+ line: lineNumber,
74
+ column: match.index
75
+ };
76
+
77
+ errors.push([node, location, "Irregular whitespace not allowed"]);
78
+ }
79
+ });
80
+ }
81
+
82
+ /**
83
+ * Checks the program source for irregular line terminators
84
+ * @param {ASTNode} node The program node
85
+ * @returns {void}
86
+ * @private
87
+ */
88
+ function checkForIrregularLineTerminators(node) {
89
+ var source = context.getSource(),
90
+ sourceLines = context.getSourceLines(),
91
+ linebreaks = source.match(/\r\n|\r|\n|\u2028|\u2029/g),
92
+ lastLineIndex = -1,
93
+ lineIndex,
94
+ location,
95
+ match;
96
+
97
+ while ((match = irregularLineTerminators.exec(source)) !== null) {
98
+ lineIndex = linebreaks.indexOf(match[0], lastLineIndex + 1) || 0;
99
+
100
+ location = {
101
+ line: lineIndex + 1,
102
+ column: sourceLines[lineIndex].length
103
+ };
104
+
105
+ errors.push([node, location, "Irregular whitespace not allowed"]);
106
+ lastLineIndex = lineIndex;
107
+ }
108
+ }
109
+
110
+ return {
111
+ "Program": function (node) {
112
+ /**
113
+ * As we can easily fire warnings for all white space issues with all the source its simpler to fire them here
114
+ * This means we can check all the application code without having to worry about issues caused in the parser tokens
115
+ * When writing this code also evaluating per node was missing out connecting tokens in some cases
116
+ * We can later filter the errors when they are found to be not an issue in nodes we don't care about
117
+ */
118
+
119
+ checkForIrregularWhitespace(node);
120
+ checkForIrregularLineTerminators(node);
121
+ },
122
+
123
+ "Identifier": removeInvalidNodeErrors,
124
+ "Literal": removeInvalidNodeErrors,
125
+ "Program:exit": function () {
126
+
127
+ // If we have any errors remaining report on them
128
+ errors.forEach(function (error) {
129
+ context.report.apply(this, error);
130
+ });
131
+ }
132
+ };
133
+ };
134
+
135
+ module.exports.schema = [];
@@ -1,28 +1,28 @@
1
- /**
2
- * @fileoverview Rule to flag usage of __iterator__ property
3
- * @author Ian Christian Myers
4
- */
5
-
6
- "use strict";
7
-
8
- //------------------------------------------------------------------------------
9
- // Rule Definition
10
- //------------------------------------------------------------------------------
11
-
12
- module.exports = function(context) {
13
-
14
- return {
15
-
16
- "MemberExpression": function(node) {
17
-
18
- if (node.property &&
19
- (node.property.type === "Identifier" && node.property.name === "__iterator__" && !node.computed) ||
20
- (node.property.type === "Literal" && node.property.value === "__iterator__")) {
21
- context.report(node, "Reserved name '__iterator__'.");
22
- }
23
- }
24
- };
25
-
26
- };
27
-
28
- module.exports.schema = [];
1
+ /**
2
+ * @fileoverview Rule to flag usage of __iterator__ property
3
+ * @author Ian Christian Myers
4
+ */
5
+
6
+ "use strict";
7
+
8
+ //------------------------------------------------------------------------------
9
+ // Rule Definition
10
+ //------------------------------------------------------------------------------
11
+
12
+ module.exports = function(context) {
13
+
14
+ return {
15
+
16
+ "MemberExpression": function(node) {
17
+
18
+ if (node.property &&
19
+ (node.property.type === "Identifier" && node.property.name === "__iterator__" && !node.computed) ||
20
+ (node.property.type === "Literal" && node.property.value === "__iterator__")) {
21
+ context.report(node, "Reserved name '__iterator__'.");
22
+ }
23
+ }
24
+ };
25
+
26
+ };
27
+
28
+ module.exports.schema = [];
@@ -1,64 +1,64 @@
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
- // Rule Definition
10
- //------------------------------------------------------------------------------
11
-
12
- module.exports = function(context) {
13
-
14
- //--------------------------------------------------------------------------
15
- // Helpers
16
- //--------------------------------------------------------------------------
17
-
18
- function findIdentifier(scope, identifier) {
19
- var found = false;
20
-
21
- scope.variables.forEach(function(variable) {
22
- if (variable.name === identifier) {
23
- found = true;
24
- }
25
- });
26
-
27
- scope.references.forEach(function(reference) {
28
- if (reference.identifier.name === identifier) {
29
- found = true;
30
- }
31
- });
32
-
33
- // If we have not found the identifier in this scope, check the parent
34
- // scope.
35
- if (scope.upper && !found) {
36
- return findIdentifier(scope.upper, identifier);
37
- }
38
-
39
- return found;
40
- }
41
-
42
- //--------------------------------------------------------------------------
43
- // Public API
44
- //--------------------------------------------------------------------------
45
-
46
- return {
47
-
48
- "LabeledStatement": function(node) {
49
-
50
- // Fetch the innermost scope.
51
- var scope = context.getScope();
52
-
53
- // Recursively find the identifier walking up the scope, starting
54
- // with the innermost scope.
55
- if (findIdentifier(scope, node.label.name)) {
56
- context.report(node, "Found identifier with same name as label.");
57
- }
58
- }
59
-
60
- };
61
-
62
- };
63
-
64
- module.exports.schema = [];
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
+ // Rule Definition
10
+ //------------------------------------------------------------------------------
11
+
12
+ module.exports = function(context) {
13
+
14
+ //--------------------------------------------------------------------------
15
+ // Helpers
16
+ //--------------------------------------------------------------------------
17
+
18
+ function findIdentifier(scope, identifier) {
19
+ var found = false;
20
+
21
+ scope.variables.forEach(function(variable) {
22
+ if (variable.name === identifier) {
23
+ found = true;
24
+ }
25
+ });
26
+
27
+ scope.references.forEach(function(reference) {
28
+ if (reference.identifier.name === identifier) {
29
+ found = true;
30
+ }
31
+ });
32
+
33
+ // If we have not found the identifier in this scope, check the parent
34
+ // scope.
35
+ if (scope.upper && !found) {
36
+ return findIdentifier(scope.upper, identifier);
37
+ }
38
+
39
+ return found;
40
+ }
41
+
42
+ //--------------------------------------------------------------------------
43
+ // Public API
44
+ //--------------------------------------------------------------------------
45
+
46
+ return {
47
+
48
+ "LabeledStatement": function(node) {
49
+
50
+ // Fetch the innermost scope.
51
+ var scope = context.getScope();
52
+
53
+ // Recursively find the identifier walking up the scope, starting
54
+ // with the innermost scope.
55
+ if (findIdentifier(scope, node.label.name)) {
56
+ context.report(node, "Found identifier with same name as label.");
57
+ }
58
+ }
59
+
60
+ };
61
+
62
+ };
63
+
64
+ module.exports.schema = [];
@@ -1,44 +1,44 @@
1
- /**
2
- * @fileoverview Disallow Labeled Statements
3
- * @author Nicholas C. Zakas
4
- */
5
- "use strict";
6
-
7
- //------------------------------------------------------------------------------
8
- // Rule Definition
9
- //------------------------------------------------------------------------------
10
-
11
- module.exports = function(context) {
12
-
13
- //--------------------------------------------------------------------------
14
- // Public
15
- //--------------------------------------------------------------------------
16
-
17
- return {
18
-
19
- "LabeledStatement": function(node) {
20
- context.report(node, "Unexpected labeled statement.");
21
- },
22
-
23
- "BreakStatement": function(node) {
24
-
25
- if (node.label) {
26
- context.report(node, "Unexpected label in break statement.");
27
- }
28
-
29
- },
30
-
31
- "ContinueStatement": function(node) {
32
-
33
- if (node.label) {
34
- context.report(node, "Unexpected label in continue statement.");
35
- }
36
-
37
- }
38
-
39
-
40
- };
41
-
42
- };
43
-
44
- module.exports.schema = [];
1
+ /**
2
+ * @fileoverview Disallow Labeled Statements
3
+ * @author Nicholas C. Zakas
4
+ */
5
+ "use strict";
6
+
7
+ //------------------------------------------------------------------------------
8
+ // Rule Definition
9
+ //------------------------------------------------------------------------------
10
+
11
+ module.exports = function(context) {
12
+
13
+ //--------------------------------------------------------------------------
14
+ // Public
15
+ //--------------------------------------------------------------------------
16
+
17
+ return {
18
+
19
+ "LabeledStatement": function(node) {
20
+ context.report(node, "Unexpected labeled statement.");
21
+ },
22
+
23
+ "BreakStatement": function(node) {
24
+
25
+ if (node.label) {
26
+ context.report(node, "Unexpected label in break statement.");
27
+ }
28
+
29
+ },
30
+
31
+ "ContinueStatement": function(node) {
32
+
33
+ if (node.label) {
34
+ context.report(node, "Unexpected label in continue statement.");
35
+ }
36
+
37
+ }
38
+
39
+
40
+ };
41
+
42
+ };
43
+
44
+ module.exports.schema = [];