Permalink
Browse files

Merge branch 'code'

  • Loading branch information...
2 parents fd623ea + 8683b08 commit 4ee711ce09e55764da1d7fb9e2646c689dc198c7 @valueof valueof committed Nov 3, 2012
View
@@ -2,45 +2,6 @@
var _ = require("underscore");
-// Identifiers provided by the ECMAScript standard
-
-exports.reservedVars = {
- undefined : false,
- arguments : false,
- NaN : false
-};
-
-exports.ecmaIdentifiers = {
- Array : false,
- Boolean : false,
- Date : false,
- decodeURI : false,
- decodeURIComponent : false,
- encodeURI : false,
- encodeURIComponent : false,
- Error : false,
- "eval" : false,
- EvalError : false,
- Function : false,
- hasOwnProperty : false,
- isFinite : false,
- isNaN : false,
- JSON : false,
- Math : false,
- Number : false,
- Object : false,
- parseInt : false,
- parseFloat : false,
- RangeError : false,
- ReferenceError : false,
- RegExp : false,
- String : false,
- SyntaxError : false,
- TypeError : false,
- URIError : false
-};
-
-
// Errors and warnings
var errors = {
View
@@ -6,7 +6,7 @@ var events = require("events");
var utils = require("./utils.js");
var reason = require("./reason.js");
var regexp = require("./regexp.js");
-var constants = require("./constants.js");
+var vars = require("../shared/vars.js");
var MAXERR = 50;
@@ -43,8 +43,8 @@ function Linter(code) {
// Pre-populate globals array with reserved variables,
// standard ECMAScript globals and user-supplied globals.
- this.setGlobals(constants.reservedVars);
- this.setGlobals(constants.ecmaIdentifiers);
+ this.setGlobals(vars.reservedVars);
+ this.setGlobals(vars.ecmaIdentifiers);
}
Linter.prototype = {
View
@@ -1,7 +1,7 @@
"use strict";
var _ = require("underscore");
-var constants = require('./constants');
+var vars = require("../shared/vars.js");
exports.register = function (linter) {
var report = linter.report;
@@ -267,7 +267,7 @@ exports.register = function (linter) {
return false;
return expr.object.name in
- constants.ecmaIdentifiers && expr.property.name === "prototype";
+ vars.ecmaIdentifiers && expr.property.name === "prototype";
}
if (left.type !== "MemberExpression")
View
@@ -0,0 +1,207 @@
+"use strict";
+
+var _ = require("underscore");
+
+var errors = {
+ E001: "Bad option: '{a}'.",
+ E002: "Unmatched '{a}'.",
+ E003: "Expected '{a}' to match '{b}' from line {c} and " +
+ "instead saw '{d}'.",
+ E004: "Expected '{a}' and instead saw '{b}'.",
+ E005: "Expected an identifier and instead saw '{a}'.",
+ E006: "Line breaking error '{a}'.",
+ E007: "Attempting to override '{a}' which is a constant.",
+ E008: "Bad assignment.",
+ E009: "Missing \"use strict\" statement.",
+ E010: "Strict violation.",
+ E011: "const '{a}' has already been declared.",
+ E012: "const '{a}' is initialized to 'undefined'.",
+ E013: "Missing '{a}'.",
+ E014: "Unexpected '{a}'.",
+ E015: "Unclosed comment.",
+ E016: "A regular expression literal can be confused with '/='.",
+ E017: "Unclosed regular expression.",
+ E018: "Confusing regular expression.",
+ E019: "Unescaped '{a}'.",
+ E020: "Unbegun comment.",
+ E021: "What?", // FIXME,
+ E022: "Expected a small integer and instead saw '{a}'.",
+ E023: "Option 'validthis' can't be used in a global scope.",
+ E024: "Bad option value.",
+ E025: "Missing option value.",
+ E026: "Unexpected early end of program.",
+ E027: "Expected an operator and instead saw '{a}'.",
+ E028: "Strict violation.",
+ E029: "get/set are ES5 features.",
+ E030: "Missing property name.",
+ E031: "Expected to see a statement and instead saw a block.",
+ E032: "Constant {a} was not declared correctly.",
+ E033: "Variable {a} was not declared correctly.",
+ E034: "Function declarations are not invocable. Wrap the whole function " +
+ "invocation in parens.",
+ E035: "'with' is not allowed in strict mode.",
+ E036: "Each value should have its own case label.",
+ E037: "Missing ':' on a case clause.",
+ E038: "Missing '}' to match '{' from line {a}.",
+ E039: "Missing ']' to match '[' form line {a}.",
+ E040: "Unexpected comma.",
+ E041: "Expected a JSON value.",
+ E042: "Input is neither a string nor an array of strings.",
+ E043: "Input is empty.",
+ E044: "Unclosed string.",
+};
+
+var warnings = {
+ W001: "'hasOwnProperty' is a really bad name.",
+ W002: "Value of '{a}' may be overwritten in IE.",
+ W003: "'{a}' was used before it was defined.",
+ W004: "'{a}' is already defined.",
+ W005: "A dot following a number can be confused with a decimal point.",
+ W006: "Confusing minuses.",
+ W007: "Confusing pluses.",
+ W008: "A leading decimal point can be confused with a dot: '.{a}'.",
+ W009: "The array literal notation [] is preferrable.",
+ W010: "The object literal notation {} is preferrable.",
+ W011: "Unexpected space after '{a}'.",
+ W012: "Unexpected space before '{a}'.",
+ W013: "Missing space after '{a}'.",
+ W014: "Bad line breaking before '{a}'.",
+ W015: "Expected '{a}' to have an indentation at {b} instead at {c}.",
+ W016: "Unexpected use of '{a}'.",
+ W017: "Bad operand.",
+ W018: "Confusing use of '{a}'.",
+ W019: "Use the isNaN function to compare with NaN.",
+ W020: "Read only.",
+ W021: "'{a}' is a function.",
+ W022: "Do not assign to the exception parameter.",
+ W023: "Expected an identifier in an assignment and instead saw a " +
+ "function invocation.",
+ W024: "Expected an identifier and instead saw '{a}' (a reserved word).",
+ W025: "Missing name in function declaration.",
+ W026: "Inner functions should be listed at the top of the outer function.",
+ W027: "Unreachable '{a}' after '{b}'.",
+ W028: "Label '{a}' on {b} statement.",
+ W029: "Label '{a}' looks like a javascript url.",
+ W030: "Expected an assignment or function call and instead saw " +
+ "an expression.",
+ W031: "Do not use 'new' for side effects.",
+ W032: "Unnecessary semicolon.",
+ W033: "Missing semicolon.",
+ W034: "Unnecessary directive \"{a}\".",
+ W035: "Empty block.",
+ W036: "Unexpected /*member '{a}'.",
+ W037: "'{a}' is a statement label.",
+ W038: "'{a}' used out of scope.",
+ W039: "'{a}' is not allowed.",
+ W040: "Possible strict violation.",
+ W041: "Use '{a}' to compare with '{b}'.",
+ W050: "JavaScript URL.",
+ W051: "Variables should not be deleted.",
+ W052: "Unexpected '{a}'.",
+ W053: "Do not use {a} as a constructor.",
+ W054: "The Function constructor is a form of eval.",
+ W055: "A constructor name should start with an uppercase letter.",
+ W056: "Bad constructor.",
+ W057: "Weird construction. Is 'new' unnecessary?",
+ W058: "Missing '()' invoking a constructor.",
+ W059: "Avoid arguments.{a}.",
+ W060: "document.write can be a form of eval.",
+ W061: "eval can be harmful.",
+ W062: "Wrap an immediate function invocation in parens " +
+ "to assist the reader in understanding that the expression " +
+ "is the result of a function, and not the function itself.",
+ W063: "Math is not a function.",
+ W064: "Missing 'new' prefix when invoking a constructor.",
+ W065: "Missing radix parameter.",
+ W066: "Implied eval. Consider passing a function instead of a string.",
+ W067: "Bad invocation.",
+ W068: "Wrapping non-IIFE function literals in parens is unnecessary.",
+ W069: "['{a}'] is better written in dot notation.",
+ W070: "Extra comma. (it breaks older versions of IE)",
+ W071: "This function has too many statements. ({a})",
+ W072: "This function has too many parameters. ({a})",
+ W073: "Blocks are nested too deeply. ({a})",
+ W074: "This function's cyclomatic complexity is too high. ({a})",
+ W075: "Duplicate key '{a}'.",
+ W076: "Unexpected parameter '{a}' in get {b} function.",
+ W077: "Expected a single parameter in set {a} function.",
+ W078: "Setter is defined without getter.",
+ W079: "Redefinition of '{a}'.",
+ W080: "It's not necessary to initialize '{a}' to 'undefined'.",
+ W081: "Too many var statements.",
+ W082: "Function declarations should not be placed in blocks. " +
+ "Use a function expression or move the statement to the top of " +
+ "the outer function.",
+ W083: "Don't make functions within a loop.",
+ W084: "Expected a conditional expression and instead saw an " +
+ "assignment.",
+ W085: "Don't use 'with'.",
+ W086: "Expected a 'break' statement before '{a}'.",
+ W087: "Forgotten 'debugger' statement?",
+ W088: "Bad for in variable '{a}'.",
+ W089: "The body of a for in should be wrapped in an if statement to filter " +
+ "unwanted properties from the prototype.",
+ W090: "'{a}' is not a statement label.",
+ W091: "'{a}' is out of scope.",
+ W092: "Wrap the /regexp/ literal in parens to disambiguate the slash operator.",
+ W093: "Did you mean to return a conditional instead of an assignment?",
+ W094: "Unexpected comma.",
+ W095: "Expected a string and instead saw {a}.",
+ W096: "The '{a}' key may produce unexpected results.",
+ W097: "Use the function form of \"use strict\".",
+ W098: "'{a}' is defined but never used.",
+ W099: "Mixed spaces and tabs.",
+ W100: "This character may get silently deleted by one or more browsers.",
+ W101: "Line is too long.",
+ W102: "Trailing whitespace.",
+ W103: "The '{a}' property is deprecated.",
+ W104: "'{a}' is only available in JavaScript 1.7.",
+ W105: "Unexpected {a} in '{b}'.",
+ W106: "Identifier '{a}' is not in camel case.",
+ W107: "Script URL.",
+ W108: "Strings must use doublequote.",
+ W109: "Strings must use singlequote.",
+ W110: "Mixed double and single quotes.",
+ W111: "Unnecessary escapement.",
+ W112: "Unclosed string.",
+ W113: "Control character in string: {a}.",
+ W114: "Avoid {a}.",
+ W115: "Octal literals are not allowed in strict mode.",
+ W116: "Avoid EOL escapement.",
+ W117: "Bad escapement of EOL. Use option multistr if needed.",
+ W118: "Bad escapement.",
+ W119: "Bad number '{a}'.",
+ W120: "Don't use extra leading zeros '{a}'.",
+ W121: "A trailing decimal point can be confused with a dot: '{a}'.",
+ W122: "{a} unterminated regular expression group(s).",
+ W123: "Unexpected control character in regular expression.",
+ W124: "Unexpected escaped character '{a}' in regular expression.",
+ W125: "Unescaped '{a}'.",
+ W126: "Spaces are hard to count. Use {{a}}.",
+ W127: "Empty class.",
+ W128: "'{a}' in character sets should be escaped.",
+ W129: "Insecure '{a}'.",
+ W130: "Expected a number and instead saw '{a}'.",
+ W131: "'{a}' should not be greater than '{b}'.",
+ W132: "Expected '{a}' and instead saw '{b}'.",
+};
+
+var info = {
+ I001: "Comma warnings can be turned off with 'laxcomma'."
+};
+
+exports.errors = {};
+exports.warnings = {};
+exports.info = {};
+
+_.each(errors, function (desc, code) {
+ exports.errors[code] = { code: code, desc: desc };
+});
+
+_.each(warnings, function (desc, code) {
+ exports.warnings[code] = { code: code, desc: desc };
+});
+
+_.each(info, function (desc, code) {
+ exports.info[code] = { code: code, desc: desc };
+});
Oops, something went wrong.

0 comments on commit 4ee711c

Please sign in to comment.