summaryrefslogtreecommitdiff
path: root/tools/eslint/lib/rules/no-extend-native.js
diff options
context:
space:
mode:
authorMichaƫl Zasso <mic.besace@gmail.com>2016-01-12 20:50:19 +0100
committerRoman Reiss <me@silverwind.io>2016-01-13 23:15:39 +0100
commit2d441493a4a46a511ba1bdf93e442c3288fbe92d (patch)
treec649c3aa100a57ff38ed267e3a5e5bba7ac8d961 /tools/eslint/lib/rules/no-extend-native.js
parented55169834a3ce16a271def9630c858626ded34d (diff)
downloadnode-new-2d441493a4a46a511ba1bdf93e442c3288fbe92d.tar.gz
tools: update eslint to v1.10.3
PR-URL: https://github.com/nodejs/io.js/pull/2286 Reviewed-By: Roman Reiss <me@silverwind.io>
Diffstat (limited to 'tools/eslint/lib/rules/no-extend-native.js')
-rw-r--r--tools/eslint/lib/rules/no-extend-native.js21
1 files changed, 9 insertions, 12 deletions
diff --git a/tools/eslint/lib/rules/no-extend-native.js b/tools/eslint/lib/rules/no-extend-native.js
index 28404194b4..49e139a29b 100644
--- a/tools/eslint/lib/rules/no-extend-native.js
+++ b/tools/eslint/lib/rules/no-extend-native.js
@@ -9,11 +9,7 @@
// Requirements
//------------------------------------------------------------------------------
-var BUILTINS = [
- "Object", "Function", "Array", "String", "Boolean", "Number", "Date",
- "RegExp", "Error", "EvalError", "RangeError", "ReferenceError",
- "SyntaxError", "TypeError", "URIError"
-];
+var globals = require("globals");
//------------------------------------------------------------------------------
// Rule Definition
@@ -23,10 +19,12 @@ module.exports = function(context) {
var config = context.options[0] || {};
var exceptions = config.exceptions || [];
- var modifiedBuiltins = BUILTINS;
+ var modifiedBuiltins = Object.keys(globals.builtin).filter(function(builtin) {
+ return builtin[0].toUpperCase() === builtin[0];
+ });
if (exceptions.length) {
- modifiedBuiltins = BUILTINS.filter(function(builtIn) {
+ modifiedBuiltins = modifiedBuiltins.filter(function(builtIn) {
return exceptions.indexOf(builtIn) === -1;
});
}
@@ -56,22 +54,21 @@ module.exports = function(context) {
});
},
- // handle the Object.defineProperty(Array.prototype) case
+ // handle the Object.definePropert[y|ies](Array.prototype) case
"CallExpression": function(node) {
var callee = node.callee,
subject,
object;
- // only worry about Object.defineProperty
+ // only worry about Object.definePropert[y|ies]
if (callee.type === "MemberExpression" &&
callee.object.name === "Object" &&
- callee.property.name === "defineProperty") {
+ (callee.property.name === "defineProperty" || callee.property.name === "defineProperties")) {
// verify the object being added to is a native prototype
subject = node.arguments[0];
- object = subject.object;
-
+ object = subject && subject.object;
if (object &&
object.type === "Identifier" &&
(modifiedBuiltins.indexOf(object.name) > -1) &&