Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

possible fix for #23, support jshint identifier parser

This fixes #23 for me, however I am not merging this into
master until I see jshint updated again and these new
scripts work.

The longer-term fix for issues like this is to require that
jshint is installed locally as a node module and use it
instead of the jshint we are installing locally in the
bundle.
  • Loading branch information...
commit 626b66fb31f8ce3ccd8c1f45caf07dc93acd41e0 1 parent 6e81383
@stepheneb stepheneb authored
View
24 Support/jshint-tm.js
@@ -23,9 +23,10 @@ function html(s) {
*/
function download_jshint_resources(ready) {
var req,
- resources = ["jshint.js", "vars.js", "messages.js", "lex.js", "reg.js", "state.js", "style.js"];
+ jshint_resources = ["jshint.js", "vars.js", "messages.js", "lex.js", "reg.js", "state.js", "style.js"],
+ jshint_data_resources = ["ascii-identifier-data.js", "non-ascii-identifier-part-only.js", "non-ascii-identifier-start.js"];
- resources.forEach(function(resource) {
+ jshint_resources.forEach(function(resource) {
req = https.get({host: 'raw.github.com', port: 443, path: '/jshint/jshint/master/src/' + resource}, function(res) {
if (res.statusCode === 200) {
res.setEncoding('utf8');
@@ -44,6 +45,25 @@ function download_jshint_resources(ready) {
ready('Download of ' + resource + ' failed: ' + html(err.message));
});
});
+ jshint_data_resources.forEach(function(resource) {
+ req = https.get({host: 'raw.github.com', port: 443, path: '/jshint/jshint/master/data/' + resource}, function(res) {
+ if (res.statusCode === 200) {
+ res.setEncoding('utf8');
+ var data = '';
+ res.on('data', function(chunk) {
+ data += chunk;
+ });
+ res.on('end', function() {
+ fs.writeFile(__dirname + '/../data/' + resource, data, ready);
+ });
+ }
+ else {
+ ready('Download of ' + resource + ' failed. HTTP status code: ' + res.statusCode);
+ }
+ }).on('error', function(err) {
+ ready('Download of ' + resource + ' failed: ' + html(err.message));
+ });
+ });
}
/**
View
180 Support/jshint.js
@@ -87,6 +87,7 @@ var JSHINT = (function () {
dojo : true, // if Dojo Toolkit globals should be predefined
eqeqeq : true, // if === should be required
eqnull : true, // if == null comparisons should be tolerated
+ notypeof : true, // if should report typos in typeof comparisons
es3 : true, // if ES3 syntax should be allowed
es5 : true, // if ES5 syntax should be allowed (is now set per default)
esnext : true, // if es.next specific syntax should be allowed
@@ -108,6 +109,7 @@ var JSHINT = (function () {
// loops
mootools : true, // if MooTools globals should be predefined
multistr : true, // allow multiline strings
+ freeze : true, // if modifying native object prototypes should be disallowed
newcap : true, // if constructor names must be capitalized
noarg : true, // if arguments.caller and arguments.callee should be
// disallowed
@@ -161,7 +163,8 @@ var JSHINT = (function () {
maxlen : false,
indent : false,
maxerr : false,
- predef : false,
+ predef : false, //predef is deprecated and being replaced by globals
+ globals : false,
quotmark : false, //'single'|'double'|true
scope : false,
maxstatements: false, // {int} max statements per function
@@ -173,10 +176,15 @@ var JSHINT = (function () {
// true - "vars" + check last function param
// "vars" - skip checking unused function params
// "strict" - "vars" + check all function params
- latedef : false // warn if the variable is used before its definition
+ latedef : false, // warn if the variable is used before its definition
// false - don't emit any warnings
// true - warn if any variable is used before its definition
// "nofunc" - warn for any variable but function declarations
+ ignore : false // start/end ignoring lines of code, bypassing the lexer
+ // start - start ignoring lines, including the current line
+ // end - stop ignoring lines, starting on the next line
+ // line - ignore warnings / errors for just a single line
+ // (this option does not bypass the lexer)
},
// These are JSHint boolean options which are shared with JSLint
@@ -752,6 +760,27 @@ var JSHINT = (function () {
return;
}
+ if (key === "ignore") {
+ switch (val) {
+ case "start":
+ state.ignoreLinterErrors = true;
+ break;
+ case "end":
+ state.ignoreLinterErrors = false;
+ break;
+ case "line":
+ // Any errors or warnings that happened on the current line, make them go away.
+ JSHINT.errors = _.reject(JSHINT.errors, function (error) {
+ // nt.line returns to the current line
+ return error.line === nt.line;
+ });
+ break;
+ default:
+ error("E002", nt);
+ }
+ return;
+ }
+
var match = /^([+-])(W\d{3})$/g.exec(key);
if (match) {
// ignore for -W..., unignore for +W...
@@ -1326,11 +1355,67 @@ var JSHINT = (function () {
node.type === "undefined");
}
+ // Checks whether the 'typeof' operator is used with the correct
+ // value. For docs on 'typeof' see:
+ // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof
+
+ function isTypoTypeof(left, right) {
+ if (state.option.notypeof)
+ return false;
+
+ if (!left || !right)
+ return false;
+
+ var values = [
+ "undefined", "object", "boolean", "number",
+ "string", "function", "xml", "object"
+ ];
+
+ if (right.type === "(identifier)" && right.value === "typeof" && left.type === "(string)")
+ return !_.contains(values, left.value);
+
+ return false;
+ }
+
+ function findNativePrototype(left) {
+ var natives = [
+ "Array", "ArrayBuffer", "Boolean", "Collator", "DataView", "Date",
+ "DateTimeFormat", "Error", "EvalError", "Float32Array", "Float64Array",
+ "Function", "Infinity", "Intl", "Int16Array", "Int32Array", "Int8Array",
+ "Iterator", "Number", "NumberFormat", "Object", "RangeError",
+ "ReferenceError", "RegExp", "StopIteration", "String", "SyntaxError",
+ "TypeError", "Uint16Array", "Uint32Array", "Uint8Array", "Uint8ClampedArray",
+ "URIError"
+ ];
+
+ function walkPrototype(obj) {
+ if (typeof obj !== "object") return;
+ return obj.right === "prototype" ? obj : walkPrototype(obj.left);
+ }
+
+ function walkNative(obj) {
+ while (!obj.identifier && typeof obj.left === "object")
+ obj = obj.left;
+
+ if (obj.identifier && natives.indexOf(obj.value) >= 0)
+ return obj.value;
+ }
+
+ var prototype = walkPrototype(left);
+ if (prototype) return walkNative(prototype);
+ }
+
function assignop(s, f, p) {
var x = infix(s, typeof f === "function" ? f : function (left, that) {
that.left = left;
if (left) {
+ if (state.option.freeze) {
+ var nativeObject = findNativePrototype(left);
+ if (nativeObject)
+ warning("W121", left, nativeObject);
+ }
+
if (predefined[left.value] === false &&
scope[left.value]["(global)"] === true) {
warning("W020", left);
@@ -1512,11 +1597,9 @@ var JSHINT = (function () {
}
if (t.id !== "(endline)") {
if (t.id === "function") {
- if (!state.option.latedef) {
- break;
+ if (state.option.latedef === true) {
+ warning("W026", t);
}
-
- warning("W026", t);
break;
}
@@ -1581,7 +1664,15 @@ var JSHINT = (function () {
// Is it a lonely block?
if (t.id === "{") {
- block(true, true);
+ // Is it a switch case block?
+ //
+ // switch (foo) {
+ // case bar: { <= here.
+ // ...
+ // }
+ // }
+ var iscase = (funct["(verb)"] === "case" && state.tokens.curr.value === ":");
+ block(true, true, false, false, iscase);
return;
}
@@ -1710,11 +1801,13 @@ var JSHINT = (function () {
* Parses a single block. A block is a sequence of statements wrapped in
* braces.
*
- * ordinary - true for everything but function bodies and try blocks.
+ * ordinary - true for everything but function bodies and try blocks.
* stmt - true if block can be a single statement (e.g. in if/for/while).
* isfunc - true if block is a function body
+ * isfatarrow -
+ * iscase - true if block is a switch case block
*/
- function block(ordinary, stmt, isfunc, isfatarrow) {
+ function block(ordinary, stmt, isfunc, isfatarrow, iscase) {
var a,
b = inblock,
old_indent = indent,
@@ -1827,7 +1920,11 @@ var JSHINT = (function () {
delete funct["(nolet)"];
}
- funct["(verb)"] = null;
+ // Don't clear and let it propagate out if it is "break", "return", or "throw" in switch case
+ if (!(iscase && ["break", "return", "throw"].indexOf(funct["(verb)"]) != -1)) {
+ funct["(verb)"] = null;
+ }
+
if (!ordinary || !state.option.funcscope) scope = s;
inblock = b;
if (ordinary && state.option.noempty && (!a || a.length === 0)) {
@@ -2120,10 +2217,20 @@ var JSHINT = (function () {
warning("W041", this, "===", left.value);
else if (isPoorRelation(right))
warning("W041", this, "===", right.value);
-
+ else if (isTypoTypeof(right, left))
+ warning("W122", this, right.value);
+ else if (isTypoTypeof(left, right))
+ warning("W122", this, left.value);
+ return this;
+ });
+ relation("===", function (left, right) {
+ if (isTypoTypeof(right, left)) {
+ warning("W122", this, right.value);
+ } else if (isTypoTypeof(left, right)) {
+ warning("W122", this, left.value);
+ }
return this;
});
- relation("===");
relation("!=", function (left, right) {
var eqnull = state.option.eqnull &&
(left.value === "null" || right.value === "null");
@@ -2134,10 +2241,21 @@ var JSHINT = (function () {
warning("W041", this, "!==", left.value);
} else if (isPoorRelation(right)) {
warning("W041", this, "!==", right.value);
+ } else if (isTypoTypeof(right, left)) {
+ warning("W122", this, right.value);
+ } else if (isTypoTypeof(left, right)) {
+ warning("W122", this, left.value);
+ }
+ return this;
+ });
+ relation("!==", function (left, right) {
+ if (isTypoTypeof(right, left)) {
+ warning("W122", this, right.value);
+ } else if (isTypoTypeof(left, right)) {
+ warning("W122", this, left.value);
}
return this;
});
- relation("!==");
relation("<");
relation(">");
relation("<=");
@@ -2262,6 +2380,7 @@ var JSHINT = (function () {
break;
case "Date":
case "RegExp":
+ case "this":
break;
default:
if (c.id !== "function") {
@@ -2366,7 +2485,7 @@ var JSHINT = (function () {
nospace(state.tokens.prev, state.tokens.curr);
if (typeof left === "object") {
- if (left.value === "parseInt" && n === 1) {
+ if (state.option.inES3() && left.value === "parseInt" && n === 1) {
warning("W065", state.tokens.curr);
}
if (!state.option.evil) {
@@ -2761,7 +2880,6 @@ var JSHINT = (function () {
}
funct["(params)"] = functionparams(fatarrowparams);
-
funct["(metrics)"].verifyMaxParametersPerFunction(funct["(params)"]);
block(false, true, true, fatarrowparams ? true:false);
@@ -2789,6 +2907,7 @@ var JSHINT = (function () {
statementCount: 0,
nestedBlockDepth: -1,
ComplexityCount: 1,
+
verifyMaxStatementsPerFunction: function () {
if (state.option.maxstatements &&
this.statementCount > state.option.maxstatements) {
@@ -3572,8 +3691,10 @@ var JSHINT = (function () {
});
blockstmt("switch", function () {
- var t = state.tokens.next,
- g = false;
+ var t = state.tokens.next;
+ var g = false;
+ var noindent = false;
+
funct["(breakage)"] += 1;
advance("(");
nonadjacent(this, t);
@@ -3585,7 +3706,13 @@ var JSHINT = (function () {
t = state.tokens.next;
advance("{");
nonadjacent(state.tokens.curr, state.tokens.next);
- indent += state.option.indent;
+
+ if (state.tokens.next.from === indent)
+ noindent = true;
+
+ if (!noindent)
+ indent += state.option.indent;
+
this.cases = [];
for (;;) {
@@ -3608,7 +3735,7 @@ var JSHINT = (function () {
warning("W086", state.tokens.curr, "case");
}
}
- indentation(-state.option.indent);
+ indentation();
advance("case");
this.cases.push(expression(20));
increaseComplexityCount();
@@ -3633,13 +3760,14 @@ var JSHINT = (function () {
}
}
}
- indentation(-state.option.indent);
+ indentation();
advance("default");
g = true;
advance(":");
break;
case "}":
- indent -= state.option.indent;
+ if (!noindent)
+ indent -= state.option.indent;
indentation();
advance("}", t);
funct["(breakage)"] -= 1;
@@ -3649,6 +3777,7 @@ var JSHINT = (function () {
error("E023", state.tokens.next, "}");
return;
default:
+ indent += state.option.indent;
if (g) {
switch (state.tokens.curr.id) {
case ",":
@@ -3672,6 +3801,7 @@ var JSHINT = (function () {
return;
}
}
+ indent -= state.option.indent;
}
}
}).labelled = true;
@@ -4781,6 +4911,7 @@ var JSHINT = (function () {
functions: [],
options: state.option
};
+
var implieds = [];
var members = [];
var fu, f, i, j, n, globals;
@@ -4835,6 +4966,13 @@ var JSHINT = (function () {
fu.character = f["(character)"];
fu.last = f["(last)"];
fu.lastcharacter = f["(lastcharacter)"];
+
+ fu.metrics = {
+ complexity: f["(metrics)"].ComplexityCount,
+ parameters: (f["(params)"] || []).length,
+ statements: f["(metrics)"].statementCount
+ };
+
data.functions.push(fu);
}
View
186 Support/lex.js
@@ -9,6 +9,12 @@ var events = require("events");
var reg = require("./reg.js");
var state = require("./state.js").state;
+var unicodeData = require("../data/ascii-identifier-data.js");
+var asciiIdentifierStartTable = unicodeData.asciiIdentifierStartTable;
+var asciiIdentifierPartTable = unicodeData.asciiIdentifierPartTable;
+var nonAsciiIdentifierStartTable = require("../data/non-ascii-identifier-start.js");
+var nonAsciiIdentifierPartTable = require("../data/non-ascii-identifier-part-only.js");
+
// Some of these token types are from JavaScript Parser API
// while others are specific to JSHint parser.
// JS Parser API: https://developer.mozilla.org/en-US/docs/SpiderMonkey/Parser_API
@@ -25,134 +31,6 @@ var Token = {
RegExp: 9
};
-// This is auto generated from the unicode tables.
-// The tables are at:
-// http://www.fileformat.info/info/unicode/category/Lu/list.htm
-// http://www.fileformat.info/info/unicode/category/Ll/list.htm
-// http://www.fileformat.info/info/unicode/category/Lt/list.htm
-// http://www.fileformat.info/info/unicode/category/Lm/list.htm
-// http://www.fileformat.info/info/unicode/category/Lo/list.htm
-// http://www.fileformat.info/info/unicode/category/Nl/list.htm
-
-var unicodeLetterTable = [
- 170, 170, 181, 181, 186, 186, 192, 214,
- 216, 246, 248, 705, 710, 721, 736, 740, 748, 748, 750, 750,
- 880, 884, 886, 887, 890, 893, 902, 902, 904, 906, 908, 908,
- 910, 929, 931, 1013, 1015, 1153, 1162, 1319, 1329, 1366,
- 1369, 1369, 1377, 1415, 1488, 1514, 1520, 1522, 1568, 1610,
- 1646, 1647, 1649, 1747, 1749, 1749, 1765, 1766, 1774, 1775,
- 1786, 1788, 1791, 1791, 1808, 1808, 1810, 1839, 1869, 1957,
- 1969, 1969, 1994, 2026, 2036, 2037, 2042, 2042, 2048, 2069,
- 2074, 2074, 2084, 2084, 2088, 2088, 2112, 2136, 2308, 2361,
- 2365, 2365, 2384, 2384, 2392, 2401, 2417, 2423, 2425, 2431,
- 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, 2482,
- 2486, 2489, 2493, 2493, 2510, 2510, 2524, 2525, 2527, 2529,
- 2544, 2545, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608,
- 2610, 2611, 2613, 2614, 2616, 2617, 2649, 2652, 2654, 2654,
- 2674, 2676, 2693, 2701, 2703, 2705, 2707, 2728, 2730, 2736,
- 2738, 2739, 2741, 2745, 2749, 2749, 2768, 2768, 2784, 2785,
- 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867,
- 2869, 2873, 2877, 2877, 2908, 2909, 2911, 2913, 2929, 2929,
- 2947, 2947, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970,
- 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986, 2990, 3001,
- 3024, 3024, 3077, 3084, 3086, 3088, 3090, 3112, 3114, 3123,
- 3125, 3129, 3133, 3133, 3160, 3161, 3168, 3169, 3205, 3212,
- 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3261, 3261,
- 3294, 3294, 3296, 3297, 3313, 3314, 3333, 3340, 3342, 3344,
- 3346, 3386, 3389, 3389, 3406, 3406, 3424, 3425, 3450, 3455,
- 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526,
- 3585, 3632, 3634, 3635, 3648, 3654, 3713, 3714, 3716, 3716,
- 3719, 3720, 3722, 3722, 3725, 3725, 3732, 3735, 3737, 3743,
- 3745, 3747, 3749, 3749, 3751, 3751, 3754, 3755, 3757, 3760,
- 3762, 3763, 3773, 3773, 3776, 3780, 3782, 3782, 3804, 3805,
- 3840, 3840, 3904, 3911, 3913, 3948, 3976, 3980, 4096, 4138,
- 4159, 4159, 4176, 4181, 4186, 4189, 4193, 4193, 4197, 4198,
- 4206, 4208, 4213, 4225, 4238, 4238, 4256, 4293, 4304, 4346,
- 4348, 4348, 4352, 4680, 4682, 4685, 4688, 4694, 4696, 4696,
- 4698, 4701, 4704, 4744, 4746, 4749, 4752, 4784, 4786, 4789,
- 4792, 4798, 4800, 4800, 4802, 4805, 4808, 4822, 4824, 4880,
- 4882, 4885, 4888, 4954, 4992, 5007, 5024, 5108, 5121, 5740,
- 5743, 5759, 5761, 5786, 5792, 5866, 5870, 5872, 5888, 5900,
- 5902, 5905, 5920, 5937, 5952, 5969, 5984, 5996, 5998, 6000,
- 6016, 6067, 6103, 6103, 6108, 6108, 6176, 6263, 6272, 6312,
- 6314, 6314, 6320, 6389, 6400, 6428, 6480, 6509, 6512, 6516,
- 6528, 6571, 6593, 6599, 6656, 6678, 6688, 6740, 6823, 6823,
- 6917, 6963, 6981, 6987, 7043, 7072, 7086, 7087, 7104, 7141,
- 7168, 7203, 7245, 7247, 7258, 7293, 7401, 7404, 7406, 7409,
- 7424, 7615, 7680, 7957, 7960, 7965, 7968, 8005, 8008, 8013,
- 8016, 8023, 8025, 8025, 8027, 8027, 8029, 8029, 8031, 8061,
- 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134, 8140,
- 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188,
- 8305, 8305, 8319, 8319, 8336, 8348, 8450, 8450, 8455, 8455,
- 8458, 8467, 8469, 8469, 8473, 8477, 8484, 8484, 8486, 8486,
- 8488, 8488, 8490, 8493, 8495, 8505, 8508, 8511, 8517, 8521,
- 8526, 8526, 8544, 8584, 11264, 11310, 11312, 11358,
- 11360, 11492, 11499, 11502, 11520, 11557, 11568, 11621,
- 11631, 11631, 11648, 11670, 11680, 11686, 11688, 11694,
- 11696, 11702, 11704, 11710, 11712, 11718, 11720, 11726,
- 11728, 11734, 11736, 11742, 11823, 11823, 12293, 12295,
- 12321, 12329, 12337, 12341, 12344, 12348, 12353, 12438,
- 12445, 12447, 12449, 12538, 12540, 12543, 12549, 12589,
- 12593, 12686, 12704, 12730, 12784, 12799, 13312, 13312,
- 19893, 19893, 19968, 19968, 40907, 40907, 40960, 42124,
- 42192, 42237, 42240, 42508, 42512, 42527, 42538, 42539,
- 42560, 42606, 42623, 42647, 42656, 42735, 42775, 42783,
- 42786, 42888, 42891, 42894, 42896, 42897, 42912, 42921,
- 43002, 43009, 43011, 43013, 43015, 43018, 43020, 43042,
- 43072, 43123, 43138, 43187, 43250, 43255, 43259, 43259,
- 43274, 43301, 43312, 43334, 43360, 43388, 43396, 43442,
- 43471, 43471, 43520, 43560, 43584, 43586, 43588, 43595,
- 43616, 43638, 43642, 43642, 43648, 43695, 43697, 43697,
- 43701, 43702, 43705, 43709, 43712, 43712, 43714, 43714,
- 43739, 43741, 43777, 43782, 43785, 43790, 43793, 43798,
- 43808, 43814, 43816, 43822, 43968, 44002, 44032, 44032,
- 55203, 55203, 55216, 55238, 55243, 55291, 63744, 64045,
- 64048, 64109, 64112, 64217, 64256, 64262, 64275, 64279,
- 64285, 64285, 64287, 64296, 64298, 64310, 64312, 64316,
- 64318, 64318, 64320, 64321, 64323, 64324, 64326, 64433,
- 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019,
- 65136, 65140, 65142, 65276, 65313, 65338, 65345, 65370,
- 65382, 65470, 65474, 65479, 65482, 65487, 65490, 65495,
- 65498, 65500, 65536, 65547, 65549, 65574, 65576, 65594,
- 65596, 65597, 65599, 65613, 65616, 65629, 65664, 65786,
- 65856, 65908, 66176, 66204, 66208, 66256, 66304, 66334,
- 66352, 66378, 66432, 66461, 66464, 66499, 66504, 66511,
- 66513, 66517, 66560, 66717, 67584, 67589, 67592, 67592,
- 67594, 67637, 67639, 67640, 67644, 67644, 67647, 67669,
- 67840, 67861, 67872, 67897, 68096, 68096, 68112, 68115,
- 68117, 68119, 68121, 68147, 68192, 68220, 68352, 68405,
- 68416, 68437, 68448, 68466, 68608, 68680, 69635, 69687,
- 69763, 69807, 73728, 74606, 74752, 74850, 77824, 78894,
- 92160, 92728, 110592, 110593, 119808, 119892, 119894, 119964,
- 119966, 119967, 119970, 119970, 119973, 119974, 119977, 119980,
- 119982, 119993, 119995, 119995, 119997, 120003, 120005, 120069,
- 120071, 120074, 120077, 120084, 120086, 120092, 120094, 120121,
- 120123, 120126, 120128, 120132, 120134, 120134, 120138, 120144,
- 120146, 120485, 120488, 120512, 120514, 120538, 120540, 120570,
- 120572, 120596, 120598, 120628, 120630, 120654, 120656, 120686,
- 120688, 120712, 120714, 120744, 120746, 120770, 120772, 120779,
- 131072, 131072, 173782, 173782, 173824, 173824, 177972, 177972,
- 177984, 177984, 178205, 178205, 194560, 195101
-];
-
-var identifierStartTable = [];
-
-for (var i = 0; i < 128; i++) {
- identifierStartTable[i] =
- i === 36 || // $
- i >= 65 && i <= 90 || // A-Z
- i === 95 || // _
- i >= 97 && i <= 122; // a-z
-}
-
-var identifierPartTable = [];
-
-for (var i = 0; i < 128; i++) {
- identifierPartTable[i] =
- identifierStartTable[i] || // $, _, A-Z, a-z
- i >= 48 && i <= 57; // 0-9
-}
-
// Object that handles postponed lexing verifications that checks the parsed
// environment state.
@@ -214,6 +92,9 @@ function Lexer(source) {
// Shebangs are used by Node scripts.
if (lines[0] && lines[0].substr(0, 2) === "#!") {
+ if (lines[0].indexOf("node") !== -1) {
+ state.option.node = true;
+ }
lines[0] = "";
}
@@ -635,26 +516,12 @@ Lexer.prototype = {
var index = 0;
var type, char;
- // Detects any character in the Unicode categories "Uppercase
- // letter (Lu)", "Lowercase letter (Ll)", "Titlecase letter
- // (Lt)", "Modifier letter (Lm)", "Other letter (Lo)", or
- // "Letter number (Nl)".
- //
- // Both approach and unicodeLetterTable were borrowed from
- // Google's Traceur.
-
- function isUnicodeLetter(code) {
- for (var i = 0; i < unicodeLetterTable.length;) {
- if (code < unicodeLetterTable[i++]) {
- return false;
- }
-
- if (code <= unicodeLetterTable[i++]) {
- return true;
- }
- }
+ function isNonAsciiIdentifierStart(code) {
+ return nonAsciiIdentifierStartTable.indexOf(code) > -1;
+ }
- return false;
+ function isNonAsciiIdentifierPart(code) {
+ return isNonAsciiIdentifierStart(code) || nonAsciiIdentifierPartTable.indexOf(code) > -1;
}
function isHexDigit(str) {
@@ -678,7 +545,7 @@ Lexer.prototype = {
if (isHexDigit(ch1) && isHexDigit(ch2) && isHexDigit(ch3) && isHexDigit(ch4)) {
code = parseInt(ch1 + ch2 + ch3 + ch4, 16);
- if (isUnicodeLetter(code)) {
+ if (asciiIdentifierPartTable[code] || isNonAsciiIdentifierPart(code)) {
index += 5;
return "\\u" + ch1 + ch2 + ch3 + ch4;
}
@@ -699,7 +566,7 @@ Lexer.prototype = {
}
if (code < 128) {
- if (identifierStartTable[code]) {
+ if (asciiIdentifierStartTable[code]) {
index += 1;
return chr;
}
@@ -707,7 +574,7 @@ Lexer.prototype = {
return null;
}
- if (isUnicodeLetter(code)) {
+ if (isNonAsciiIdentifierStart(code)) {
index += 1;
return chr;
}
@@ -725,7 +592,7 @@ Lexer.prototype = {
}
if (code < 128) {
- if (identifierPartTable[code]) {
+ if (asciiIdentifierPartTable[code]) {
index += 1;
return chr;
}
@@ -733,7 +600,7 @@ Lexer.prototype = {
return null;
}
- if (isUnicodeLetter(code)) {
+ if (isNonAsciiIdentifierPart(code)) {
index += 1;
return chr;
}
@@ -1447,6 +1314,21 @@ Lexer.prototype = {
this.char = 1;
this.from = 1;
+ // If we are ignoring linter errors, replace the input with empty string
+ // if it doesn't already at least start or end a multi-line comment
+ if (state.ignoreLinterErrors === true) {
+ var startsWith = function (prefix) {
+ return this.indexOf(prefix) === 0;
+ };
+ var endsWith = function (suffix) {
+ return this.indexOf(suffix, this.length - suffix.length) !== -1;
+ };
+ var inputTrimmed = this.input.trim();
+ if (! (startsWith.call(inputTrimmed, "/*") || endsWith.call(inputTrimmed, "*/"))) {
+ this.input = "";
+ }
+ }
+
char = this.scanMixedSpacesAndTabs();
if (char >= 0) {
this.trigger("warning", { code: "W099", line: this.line, character: char + 1 });
View
4 Support/messages.js
@@ -192,7 +192,9 @@ var warnings = {
W117: "'{a}' is not defined.",
W118: "'{a}' is only available in Mozilla JavaScript extensions (use moz option).",
W119: "'{a}' is only available in ES6 (use esnext option).",
- W120: "You might be leaking a variable ({a}) here."
+ W120: "You might be leaking a variable ({a}) here.",
+ W121: "Extending prototype of native object: '{a}'.",
+ W122: "Invalid typeof value '{a}'"
};
var info = {
View
20 Support/package.json
@@ -1,6 +1,6 @@
{
"name": "jshint",
- "version": "2.1.10",
+ "version": "2.3.0",
"homepage": "http://jshint.com/",
"description": "Static analysis tool for JavaScript",
@@ -24,6 +24,7 @@
},
"scripts": {
+ "data": "node scripts/generate-identifier-data",
"build": "node bin/build",
"test": "nodeunit tests tests/regression tests/unit",
"pretest": "jshint src"
@@ -40,12 +41,14 @@
},
"devDependencies": {
- "jshint": "2.1.x",
- "shelljs": "0.1.x",
- "browserify": "2.12.x",
- "coveraje": "0.2.x",
- "nodeunit": "0.8.x",
- "sinon": "1.7.x"
+ "jshint": "2.3.x",
+ "shelljs": "0.1.x",
+ "browserify": "2.12.x",
+ "coveraje": "0.2.x",
+ "nodeunit": "0.8.x",
+ "sinon": "1.7.x",
+ "unicode-6.3.0": "0.1.x",
+ "regenerate": "0.5.x"
},
"jshintConfig": {
@@ -73,6 +76,7 @@
"files": [
"bin",
- "src"
+ "src",
+ "data"
]
}
View
2  Support/state.js
@@ -18,6 +18,8 @@ var state = {
this.lines = [];
this.tab = "";
this.cache = {}; // Node.JS doesn't have Map. Sniff.
+ this.ignoreLinterErrors = false; // Blank out non-multi-line-commented
+ // lines when ignoring linter errors
}
};
View
2  Support/style.js
@@ -71,7 +71,7 @@ exports.register = function (linter) {
return;
}
- if (data.name.replace(/^_+/, "").indexOf("_") > -1 && !data.name.match(/^[A-Z0-9_]*$/)) {
+ if (data.name.replace(/^_+|_+$/g, "").indexOf("_") > -1 && !data.name.match(/^[A-Z0-9_]*$/)) {
linter.warn("W106", {
line: data.line,
char: data.from,
View
1  Support/vars.js
@@ -320,6 +320,7 @@ exports.browser = {
SVGZoomAndPan : false,
TimeEvent : false,
top : false,
+ URL : false,
WebSocket : false,
window : false,
Worker : false,
View
22 data/ascii-identifier-data.js
@@ -0,0 +1,22 @@
+var identifierStartTable = [];
+
+for (var i = 0; i < 128; i++) {
+ identifierStartTable[i] =
+ i === 36 || // $
+ i >= 65 && i <= 90 || // A-Z
+ i === 95 || // _
+ i >= 97 && i <= 122; // a-z
+}
+
+var identifierPartTable = [];
+
+for (var i = 0; i < 128; i++) {
+ identifierPartTable[i] =
+ identifierStartTable[i] || // $, _, A-Z, a-z
+ i >= 48 && i <= 57; // 0-9
+}
+
+module.exports = {
+ asciiIdentifierStartTable: identifierStartTable,
+ asciiIdentifierPartTable: identifierPartTable
+};
View
1,570 data/non-ascii-identifier-part-only.js
@@ -0,0 +1,1570 @@
+module.exports = [
+ 768,
+ 769,
+ 770,
+ 771,
+ 772,
+ 773,
+ 774,
+ 775,
+ 776,
+ 777,
+ 778,
+ 779,
+ 780,
+ 781,
+ 782,
+ 783,
+ 784,
+ 785,
+ 786,
+ 787,
+ 788,
+ 789,
+ 790,
+ 791,
+ 792,
+ 793,
+ 794,
+ 795,
+ 796,
+ 797,
+ 798,
+ 799,
+ 800,
+ 801,
+ 802,
+ 803,
+ 804,
+ 805,
+ 806,
+ 807,
+ 808,
+ 809,
+ 810,
+ 811,
+ 812,
+ 813,
+ 814,
+ 815,
+ 816,
+ 817,
+ 818,
+ 819,
+ 820,
+ 821,
+ 822,
+ 823,
+ 824,
+ 825,
+ 826,
+ 827,
+ 828,
+ 829,
+ 830,
+ 831,
+ 832,
+ 833,
+ 834,
+ 835,
+ 836,
+ 837,
+ 838,
+ 839,
+ 840,
+ 841,
+ 842,
+ 843,
+ 844,
+ 845,
+ 846,
+ 847,
+ 848,
+ 849,
+ 850,
+ 851,
+ 852,
+ 853,
+ 854,
+ 855,
+ 856,
+ 857,
+ 858,
+ 859,
+ 860,
+ 861,
+ 862,
+ 863,
+ 864,
+ 865,
+ 866,
+ 867,
+ 868,
+ 869,
+ 870,
+ 871,
+ 872,
+ 873,
+ 874,
+ 875,
+ 876,
+ 877,
+ 878,
+ 879,
+ 1155,
+ 1156,
+ 1157,
+ 1158,
+ 1159,
+ 1425,
+ 1426,
+ 1427,
+ 1428,
+ 1429,
+ 1430,
+ 1431,
+ 1432,
+ 1433,
+ 1434,
+ 1435,
+ 1436,
+ 1437,
+ 1438,
+ 1439,
+ 1440,
+ 1441,
+ 1442,
+ 1443,
+ 1444,
+ 1445,
+ 1446,
+ 1447,
+ 1448,
+ 1449,
+ 1450,
+ 1451,
+ 1452,
+ 1453,
+ 1454,
+ 1455,
+ 1456,
+ 1457,
+ 1458,
+ 1459,
+ 1460,
+ 1461,
+ 1462,
+ 1463,
+ 1464,
+ 1465,
+ 1466,
+ 1467,
+ 1468,
+ 1469,
+ 1471,
+ 1473,
+ 1474,
+ 1476,
+ 1477,
+ 1479,
+ 1552,
+ 1553,
+ 1554,
+ 1555,
+ 1556,
+ 1557,
+ 1558,
+ 1559,
+ 1560,
+ 1561,
+ 1562,
+ 1611,
+ 1612,
+ 1613,
+ 1614,
+ 1615,
+ 1616,
+ 1617,
+ 1618,
+ 1619,
+ 1620,
+ 1621,
+ 1622,
+ 1623,
+ 1624,
+ 1625,
+ 1626,
+ 1627,
+ 1628,
+ 1629,
+ 1630,
+ 1631,
+ 1632,
+ 1633,
+ 1634,
+ 1635,
+ 1636,
+ 1637,
+ 1638,
+ 1639,
+ 1640,
+ 1641,
+ 1648,
+ 1750,
+ 1751,
+ 1752,
+ 1753,
+ 1754,
+ 1755,
+ 1756,
+ 1759,
+ 1760,
+ 1761,
+ 1762,
+ 1763,
+ 1764,
+ 1767,
+ 1768,
+ 1770,
+ 1771,
+ 1772,
+ 1773,
+ 1776,
+ 1777,
+ 1778,
+ 1779,
+ 1780,
+ 1781,
+ 1782,
+ 1783,
+ 1784,
+ 1785,
+ 1809,
+ 1840,
+ 1841,
+ 1842,
+ 1843,
+ 1844,
+ 1845,
+ 1846,
+ 1847,
+ 1848,
+ 1849,
+ 1850,
+ 1851,
+ 1852,
+ 1853,
+ 1854,
+ 1855,
+ 1856,
+ 1857,
+ 1858,
+ 1859,
+ 1860,
+ 1861,
+ 1862,
+ 1863,
+ 1864,
+ 1865,
+ 1866,
+ 1958,
+ 1959,
+ 1960,
+ 1961,
+ 1962,
+ 1963,
+ 1964,
+ 1965,
+ 1966,
+ 1967,
+ 1968,
+ 1984,
+ 1985,
+ 1986,
+ 1987,
+ 1988,
+ 1989,
+ 1990,
+ 1991,
+ 1992,
+ 1993,
+ 2027,
+ 2028,
+ 2029,
+ 2030,
+ 2031,
+ 2032,
+ 2033,
+ 2034,
+ 2035,
+ 2070,
+ 2071,
+ 2072,
+ 2073,
+ 2075,
+ 2076,
+ 2077,
+ 2078,
+ 2079,
+ 2080,
+ 2081,
+ 2082,
+ 2083,
+ 2085,
+ 2086,
+ 2087,
+ 2089,
+ 2090,
+ 2091,
+ 2092,
+ 2093,
+ 2137,
+ 2138,
+ 2139,
+ 2276,
+ 2277,
+ 2278,
+ 2279,
+ 2280,
+ 2281,
+ 2282,
+ 2283,
+ 2284,
+ 2285,
+ 2286,
+ 2287,
+ 2288,
+ 2289,
+ 2290,
+ 2291,
+ 2292,
+ 2293,
+ 2294,
+ 2295,
+ 2296,
+ 2297,
+ 2298,
+ 2299,
+ 2300,
+ 2301,
+ 2302,
+ 2304,
+ 2305,
+ 2306,
+ 2307,
+ 2362,
+ 2363,
+ 2364,
+ 2366,
+ 2367,
+ 2368,
+ 2369,
+ 2370,
+ 2371,
+ 2372,
+ 2373,
+ 2374,
+ 2375,
+ 2376,
+ 2377,
+ 2378,
+ 2379,
+ 2380,
+ 2381,
+ 2382,
+ 2383,
+ 2385,
+ 2386,
+ 2387,
+ 2388,
+ 2389,
+ 2390,
+ 2391,
+ 2402,
+ 2403,
+ 2406,
+ 2407,
+ 2408,
+ 2409,
+ 2410,
+ 2411,
+ 2412,
+ 2413,
+ 2414,
+ 2415,
+ 2433,
+ 2434,
+ 2435,
+ 2492,
+ 2494,
+ 2495,
+ 2496,
+ 2497,
+ 2498,
+ 2499,
+ 2500,
+ 2503,
+ 2504,
+ 2507,
+ 2508,
+ 2509,
+ 2519,
+ 2530,
+ 2531,
+ 2534,
+ 2535,
+ 2536,
+ 2537,
+ 2538,
+ 2539,
+ 2540,
+ 2541,
+ 2542,
+ 2543,
+ 2561,
+ 2562,
+ 2563,
+ 2620,
+ 2622,
+ 2623,
+ 2624,
+ 2625,
+ 2626,
+ 2631,
+ 2632,
+ 2635,
+ 2636,
+ 2637,
+ 2641,
+ 2662,
+ 2663,
+ 2664,
+ 2665,
+ 2666,
+ 2667,
+ 2668,
+ 2669,
+ 2670,
+ 2671,
+ 2672,
+ 2673,
+ 2677,
+ 2689,
+ 2690,
+ 2691,
+ 2748,
+ 2750,
+ 2751,
+ 2752,
+ 2753,
+ 2754,
+ 2755,
+ 2756,
+ 2757,
+ 2759,
+ 2760,
+ 2761,
+ 2763,
+ 2764,
+ 2765,
+ 2786,
+ 2787,
+ 2790,
+ 2791,
+ 2792,
+ 2793,
+ 2794,
+ 2795,
+ 2796,
+ 2797,
+ 2798,
+ 2799,
+ 2817,
+ 2818,
+ 2819,
+ 2876,
+ 2878,
+ 2879,
+ 2880,
+ 2881,
+ 2882,
+ 2883,
+ 2884,
+ 2887,
+ 2888,
+ 2891,
+ 2892,
+ 2893,
+ 2902,
+ 2903,
+ 2914,
+ 2915,
+ 2918,
+ 2919,
+ 2920,
+ 2921,
+ 2922,
+ 2923,
+ 2924,
+ 2925,
+ 2926,
+ 2927,
+ 2946,
+ 3006,
+ 3007,
+ 3008,
+ 3009,
+ 3010,
+ 3014,
+ 3015,
+ 3016,
+ 3018,
+ 3019,
+ 3020,
+ 3021,
+ 3031,
+ 3046,
+ 3047,
+ 3048,
+ 3049,
+ 3050,
+ 3051,
+ 3052,
+ 3053,
+ 3054,
+ 3055,
+ 3073,
+ 3074,
+ 3075,
+ 3134,
+ 3135,
+ 3136,
+ 3137,
+ 3138,
+ 3139,
+ 3140,
+ 3142,
+ 3143,
+ 3144,
+ 3146,
+ 3147,
+ 3148,
+ 3149,
+ 3157,
+ 3158,
+ 3170,
+ 3171,
+ 3174,
+ 3175,
+ 3176,
+ 3177,
+ 3178,
+ 3179,
+ 3180,
+ 3181,
+ 3182,
+ 3183,
+ 3202,
+ 3203,
+ 3260,
+ 3262,
+ 3263,
+ 3264,
+ 3265,
+ 3266,
+ 3267,
+ 3268,
+ 3270,
+ 3271,
+ 3272,
+ 3274,
+ 3275,
+ 3276,
+ 3277,
+ 3285,
+ 3286,
+ 3298,
+ 3299,
+ 3302,
+ 3303,
+ 3304,
+ 3305,
+ 3306,
+ 3307,
+ 3308,
+ 3309,
+ 3310,
+ 3311,
+ 3330,
+ 3331,
+ 3390,
+ 3391,
+ 3392,
+ 3393,
+ 3394,
+ 3395,
+ 3396,
+ 3398,
+ 3399,
+ 3400,
+ 3402,
+ 3403,
+ 3404,
+ 3405,
+ 3415,
+ 3426,
+ 3427,
+ 3430,
+ 3431,
+ 3432,
+ 3433,
+ 3434,
+ 3435,
+ 3436,
+ 3437,
+ 3438,
+ 3439,
+ 3458,
+ 3459,
+ 3530,
+ 3535,
+ 3536,
+ 3537,
+ 3538,
+ 3539,
+ 3540,
+ 3542,
+ 3544,
+ 3545,
+ 3546,
+ 3547,
+ 3548,
+ 3549,
+ 3550,
+ 3551,
+ 3570,
+ 3571,
+ 3633,
+ 3636,
+ 3637,
+ 3638,
+ 3639,
+ 3640,
+ 3641,
+ 3642,
+ 3655,
+ 3656,
+ 3657,
+ 3658,
+ 3659,
+ 3660,
+ 3661,
+ 3662,
+ 3664,
+ 3665,
+ 3666,
+ 3667,
+ 3668,
+ 3669,
+ 3670,
+ 3671,
+ 3672,
+ 3673,
+ 3761,
+ 3764,
+ 3765,
+ 3766,
+ 3767,
+ 3768,
+ 3769,
+ 3771,
+ 3772,
+ 3784,
+ 3785,
+ 3786,
+ 3787,
+ 3788,
+ 3789,
+ 3792,
+ 3793,
+ 3794,
+ 3795,
+ 3796,
+ 3797,
+ 3798,
+ 3799,
+ 3800,
+ 3801,
+ 3864,
+ 3865,
+ 3872,
+ 3873,
+ 3874,
+ 3875,
+ 3876,
+ 3877,
+ 3878,
+ 3879,
+ 3880,
+ 3881,
+ 3893,
+ 3895,
+ 3897,
+ 3902,
+ 3903,
+ 3953,
+ 3954,
+ 3955,
+ 3956,
+ 3957,
+ 3958,
+ 3959,
+ 3960,
+ 3961,
+ 3962,
+ 3963,
+ 3964,
+ 3965,
+ 3966,
+ 3967,
+ 3968,
+ 3969,
+ 3970,
+ 3971,
+ 3972,
+ 3974,
+ 3975,
+ 3981,
+ 3982,
+ 3983,
+ 3984,
+ 3985,
+ 3986,
+ 3987,
+ 3988,
+ 3989,
+ 3990,
+ 3991,
+ 3993,
+ 3994,
+ 3995,
+ 3996,
+ 3997,
+ 3998,
+ 3999,
+ 4000,
+ 4001,
+ 4002,
+ 4003,
+ 4004,
+ 4005,
+ 4006,
+ 4007,
+ 4008,
+ 4009,
+ 4010,
+ 4011,
+ 4012,
+ 4013,
+ 4014,
+ 4015,
+ 4016,
+ 4017,
+ 4018,
+ 4019,
+ 4020,
+ 4021,
+ 4022,
+ 4023,
+ 4024,
+ 4025,
+ 4026,
+ 4027,
+ 4028,
+ 4038,
+ 4139,
+ 4140,
+ 4141,
+ 4142,
+ 4143,
+ 4144,
+ 4145,
+ 4146,
+ 4147,
+ 4148,
+ 4149,
+ 4150,
+ 4151,
+ 4152,
+ 4153,
+ 4154,
+ 4155,
+ 4156,
+ 4157,
+ 4158,
+ 4160,
+ 4161,
+ 4162,
+ 4163,
+ 4164,
+ 4165,
+ 4166,
+ 4167,
+ 4168,
+ 4169,
+ 4182,
+ 4183,
+ 4184,
+ 4185,
+ 4190,
+ 4191,
+ 4192,
+ 4194,
+ 4195,
+ 4196,
+ 4199,
+ 4200,
+ 4201,
+ 4202,
+ 4203,
+ 4204,
+ 4205,
+ 4209,
+ 4210,
+ 4211,
+ 4212,
+ 4226,
+ 4227,
+ 4228,
+ 4229,
+ 4230,
+ 4231,
+ 4232,
+ 4233,
+ 4234,
+ 4235,
+ 4236,
+ 4237,
+ 4239,
+ 4240,
+ 4241,
+ 4242,
+ 4243,
+ 4244,
+ 4245,
+ 4246,
+ 4247,
+ 4248,
+ 4249,
+ 4250,
+ 4251,
+ 4252,
+ 4253,
+ 4957,
+ 4958,
+ 4959,
+ 5906,
+ 5907,
+ 5908,
+ 5938,
+ 5939,
+ 5940,
+ 5970,
+ 5971,
+ 6002,
+ 6003,
+ 6068,
+ 6069,
+ 6070,
+ 6071,
+ 6072,
+ 6073,
+ 6074,
+ 6075,
+ 6076,
+ 6077,
+ 6078,
+ 6079,
+ 6080,
+ 6081,
+ 6082,
+ 6083,
+ 6084,
+ 6085,
+ 6086,
+ 6087,
+ 6088,
+ 6089,
+ 6090,
+ 6091,
+ 6092,
+ 6093,
+ 6094,
+ 6095,
+ 6096,
+ 6097,
+ 6098,
+ 6099,
+ 6109,
+ 6112,
+ 6113,
+ 6114,
+ 6115,
+ 6116,
+ 6117,
+ 6118,
+ 6119,
+ 6120,
+ 6121,
+ 6155,
+ 6156,
+ 6157,
+ 6160,
+ 6161,
+ 6162,
+ 6163,
+ 6164,
+ 6165,
+ 6166,
+ 6167,
+ 6168,
+ 6169,
+ 6313,
+ 6432,
+ 6433,
+ 6434,
+ 6435,
+ 6436,
+ 6437,
+ 6438,
+ 6439,
+ 6440,
+ 6441,
+ 6442,
+ 6443,
+ 6448,
+ 6449,
+ 6450,
+ 6451,
+ 6452,
+ 6453,
+ 6454,
+ 6455,
+ 6456,
+ 6457,
+ 6458,
+ 6459,
+ 6470,
+ 6471,
+ 6472,
+ 6473,
+ 6474,
+ 6475,
+ 6476,
+ 6477,
+ 6478,
+ 6479,
+ 6576,
+ 6577,
+ 6578,
+ 6579,
+ 6580,
+ 6581,
+ 6582,
+ 6583,
+ 6584,
+ 6585,
+ 6586,
+ 6587,
+ 6588,
+ 6589,
+ 6590,
+ 6591,
+ 6592,
+ 6600,
+ 6601,
+ 6608,
+ 6609,
+ 6610,
+ 6611,
+ 6612,
+ 6613,
+ 6614,
+ 6615,
+ 6616,
+ 6617,
+ 6679,
+ 6680,
+ 6681,
+ 6682,
+ 6683,
+ 6741,
+ 6742,
+ 6743,
+ 6744,
+ 6745,
+ 6746,
+ 6747,
+ 6748,
+ 6749,
+ 6750,
+ 6752,
+ 6753,
+ 6754,
+ 6755,
+ 6756,
+ 6757,
+ 6758,
+ 6759,
+ 6760,
+ 6761,
+ 6762,
+ 6763,
+ 6764,
+ 6765,
+ 6766,
+ 6767,
+ 6768,
+ 6769,
+ 6770,
+ 6771,
+ 6772,
+ 6773,
+ 6774,
+ 6775,
+ 6776,
+ 6777,
+ 6778,
+ 6779,
+ 6780,
+ 6783,
+ 6784,
+ 6785,
+ 6786,
+ 6787,
+ 6788,
+ 6789,
+ 6790,
+ 6791,
+ 6792,
+ 6793,
+ 6800,
+ 6801,
+ 6802,
+ 6803,
+ 6804,
+ 6805,
+ 6806,
+ 6807,
+ 6808,
+ 6809,
+ 6912,
+ 6913,
+ 6914,
+ 6915,
+ 6916,
+ 6964,
+ 6965,
+ 6966,
+ 6967,
+ 6968,
+ 6969,
+ 6970,
+ 6971,
+ 6972,
+ 6973,
+ 6974,
+ 6975,
+ 6976,
+ 6977,
+ 6978,
+ 6979,
+ 6980,
+ 6992,
+ 6993,
+ 6994,
+ 6995,
+ 6996,
+ 6997,
+ 6998,
+ 6999,
+ 7000,
+ 7001,
+ 7019,
+ 7020,
+ 7021,
+ 7022,
+ 7023,
+ 7024,
+ 7025,
+ 7026,
+ 7027,
+ 7040,
+ 7041,
+ 7042,
+ 7073,
+ 7074,
+ 7075,
+ 7076,
+ 7077,
+ 7078,
+ 7079,
+ 7080,
+ 7081,
+ 7082,
+ 7083,
+ 7084,
+ 7085,
+ 7088,
+ 7089,
+ 7090,
+ 7091,
+ 7092,
+ 7093,
+ 7094,
+ 7095,
+ 7096,
+ 7097,
+ 7142,
+ 7143,
+ 7144,
+ 7145,
+ 7146,
+ 7147,
+ 7148,
+ 7149,
+ 7150,
+ 7151,
+ 7152,
+ 7153,
+ 7154,
+ 7155,
+ 7204,
+ 7205,
+ 7206,
+ 7207,
+ 7208,
+ 7209,
+ 7210,
+ 7211,
+ 7212,
+ 7213,
+ 7214,
+ 7215,
+ 7216,
+ 7217,
+ 7218,
+ 7219,
+ 7220,
+ 7221,
+ 7222,
+ 7223,
+ 7232,
+ 7233,
+ 7234,
+ 7235,
+ 7236,
+ 7237,
+ 7238,
+ 7239,
+ 7240,
+ 7241,
+ 7248,
+ 7249,
+ 7250,
+ 7251,
+ 7252,
+ 7253,
+ 7254,
+ 7255,
+ 7256,
+ 7257,
+ 7376,
+ 7377,
+ 7378,
+ 7380,
+ 7381,
+ 7382,
+ 7383,
+ 7384,
+ 7385,
+ 7386,
+ 7387,
+ 7388,
+ 7389,
+ 7390,
+ 7391,
+ 7392,
+ 7393,
+ 7394,
+ 7395,
+ 7396,
+ 7397,
+ 7398,
+ 7399,
+ 7400,
+ 7405,
+ 7410,
+ 7411,
+ 7412,
+ 7616,
+ 7617,
+ 7618,
+ 7619,
+ 7620,
+ 7621,
+ 7622,
+ 7623,
+ 7624,
+ 7625,
+ 7626,
+ 7627,
+ 7628,
+ 7629,
+ 7630,
+ 7631,
+ 7632,
+ 7633,
+ 7634,
+ 7635,
+ 7636,
+ 7637,
+ 7638,
+ 7639,
+ 7640,
+ 7641,
+ 7642,
+ 7643,
+ 7644,
+ 7645,
+ 7646,
+ 7647,
+ 7648,
+ 7649,
+ 7650,
+ 7651,
+ 7652,
+ 7653,
+ 7654,
+ 7676,
+ 7677,
+ 7678,
+ 7679,
+ 8204,
+ 8205,
+ 8255,
+ 8256,
+ 8276,
+ 8400,
+ 8401,
+ 8402,
+ 8403,
+ 8404,
+ 8405,
+ 8406,
+ 8407,
+ 8408,
+ 8409,
+ 8410,
+ 8411,
+ 8412,
+ 8417,
+ 8421,
+ 8422,
+ 8423,
+ 8424,
+ 8425,
+ 8426,
+ 8427,
+ 8428,
+ 8429,
+ 8430,
+ 8431,
+ 8432,
+ 11503,
+ 11504,
+ 11505,
+ 11647,
+ 11744,
+ 11745,
+ 11746,
+ 11747,
+ 11748,
+ 11749,
+ 11750,
+ 11751,
+ 11752,
+ 11753,
+ 11754,
+ 11755,
+ 11756,
+ 11757,
+ 11758,
+ 11759,
+ 11760,
+ 11761,
+ 11762,
+ 11763,
+ 11764,
+ 11765,
+ 11766,
+ 11767,
+ 11768,
+ 11769,
+ 11770,
+ 11771,
+ 11772,
+ 11773,
+ 11774,
+ 11775,
+ 12330,
+ 12331,
+ 12332,
+ 12333,
+ 12334,
+ 12335,
+ 12441,
+ 12442,
+ 42528,
+ 42529,
+ 42530,
+ 42531,
+ 42532,
+ 42533,
+ 42534,
+ 42535,
+ 42536,
+ 42537,
+ 42607,
+ 42612,
+ 42613,
+ 42614,
+ 42615,
+ 42616,
+ 42617,
+ 42618,
+ 42619,
+ 42620,
+ 42621,
+ 42655,
+ 42736,
+ 42737,
+ 43010,
+ 43014,
+ 43019,
+ 43043,
+ 43044,
+ 43045,
+ 43046,
+ 43047,
+ 43136,
+ 43137,
+ 43188,
+ 43189,
+ 43190,
+ 43191,
+ 43192,
+ 43193,
+ 43194,
+ 43195,
+ 43196,
+ 43197,
+ 43198,
+ 43199,
+ 43200,
+ 43201,
+ 43202,
+ 43203,
+ 43204,
+ 43216,
+ 43217,
+ 43218,
+ 43219,
+ 43220,
+ 43221,
+ 43222,
+ 43223,
+ 43224,
+ 43225,
+ 43232,
+ 43233,
+ 43234,
+ 43235,
+ 43236,
+ 43237,
+ 43238,
+ 43239,
+ 43240,
+ 43241,
+ 43242,
+ 43243,
+ 43244,
+ 43245,
+ 43246,
+ 43247,
+ 43248,
+ 43249,
+ 43264,
+ 43265,
+ 43266,
+ 43267,
+ 43268,
+ 43269,
+ 43270,
+ 43271,
+ 43272,
+ 43273,
+ 43302,
+ 43303,
+ 43304,
+ 43305,
+ 43306,
+ 43307,
+ 43308,
+ 43309,
+ 43335,
+ 43336,
+ 43337,
+ 43338,
+ 43339,
+ 43340,
+ 43341,
+ 43342,
+ 43343,
+ 43344,
+ 43345,
+ 43346,
+ 43347,
+ 43392,
+ 43393,
+ 43394,
+ 43395,
+ 43443,
+ 43444,
+ 43445,
+ 43446,
+ 43447,
+ 43448,
+ 43449,
+ 43450,
+ 43451,
+ 43452,
+ 43453,
+ 43454,
+ 43455,
+ 43456,
+ 43472,
+ 43473,
+ 43474,
+ 43475,
+ 43476,
+ 43477,
+ 43478,
+ 43479,
+ 43480,
+ 43481,
+ 43561,
+ 43562,
+ 43563,
+ 43564,
+ 43565,
+ 43566,
+ 43567,
+ 43568,
+ 43569,
+ 43570,
+ 43571,
+ 43572,
+ 43573,
+ 43574,
+ 43587,
+ 43596,
+ 43597,
+ 43600,
+ 43601,
+ 43602,
+ 43603,
+ 43604,
+ 43605,
+ 43606,
+ 43607,
+ 43608,
+ 43609,
+ 43643,
+ 43696,
+ 43698,
+ 43699,
+ 43700,
+ 43703,
+ 43704,
+ 43710,
+ 43711,
+ 43713,
+ 43755,
+ 43756,
+ 43757,
+ 43758,
+ 43759,
+ 43765,
+ 43766,
+ 44003,
+ 44004,
+ 44005,
+ 44006,
+ 44007,
+ 44008,
+ 44009,
+ 44010,
+ 44012,
+ 44013,
+ 44016,
+ 44017,
+ 44018,
+ 44019,
+ 44020,
+ 44021,
+ 44022,
+ 44023,
+ 44024,
+ 44025,
+ 64286,
+ 65024,
+ 65025,
+ 65026,
+ 65027,
+ 65028,
+ 65029,
+ 65030,
+ 65031,
+ 65032,
+ 65033,
+ 65034,
+ 65035,
+ 65036,
+ 65037,
+ 65038,
+ 65039,
+ 65056,
+ 65057,
+ 65058,
+ 65059,
+ 65060,
+ 65061,
+ 65062,
+ 65075,
+ 65076,
+ 65101,
+ 65102,
+ 65103,
+ 65296,
+ 65297,
+ 65298,
+ 65299,
+ 65300,
+ 65301,
+ 65302,
+ 65303,
+ 65304,
+ 65305,
+ 65343
+];
View
48,477 data/non-ascii-identifier-start.js
48,477 additions, 0 deletions not shown
Please sign in to comment.
Something went wrong with that request. Please try again.