tools: enable no-proto rule for linter
authorJackson Tian <shyvo1987@gmail.com>
Mon, 8 Feb 2016 13:12:09 +0000 (21:12 +0800)
committerMyles Borins <mborins@us.ibm.com>
Wed, 2 Mar 2016 22:01:11 +0000 (14:01 -0800)
Enable `no-proto` in `.eslintrc`.

Use `Object.setPrototypeOf()` and `Object.getPrototypeOf()`
instead of.

PR-URL: https://github.com/nodejs/node/pull/5140
Reviewed-By: Sakthipriyan Vairamani <thechargingvolcano@gmail.com>
Reviewed-By: Roman Reiss <me@silverwind.io>
Reviewed-By: James M Snell <jasnell@gmail.com>
.eslintrc
test/common.js
test/parallel/test-buffer-arraybuffer.js
test/parallel/test-buffer-fakes.js
test/parallel/test-buffer-inheritance.js
test/parallel/test-child-process-env.js

index a03bb13..6fc8883 100644 (file)
--- a/.eslintrc
+++ b/.eslintrc
@@ -17,6 +17,8 @@ ecmaFeatures:
 rules:
   # Possible Errors
   # list: https://github.com/eslint/eslint/tree/master/docs/rules#possible-errors
+  ## Disallow Use of __proto__
+  no-proto: 2
   ## disallow control characters in regular expressions
   no-control-regex: 2
   ## check debugger sentence
index 9e47a75..ec223a1 100644 (file)
@@ -190,7 +190,7 @@ exports.hasIPv6 = Object.keys(ifaces).some(function(name) {
 
 function protoCtrChain(o) {
   var result = [];
-  for (; o; o = o.__proto__) { result.push(o.constructor); }
+  for (; o; o = Object.getPrototypeOf(o)) { result.push(o.constructor); }
   return result.join();
 }
 
index 522d97e..56811a9 100644 (file)
@@ -40,8 +40,8 @@ assert.equal(dv.getFloat64(8, true), 3.1415);
 
 assert.throws(function() {
   function AB() { }
-  AB.__proto__ = ArrayBuffer;
-  AB.prototype.__proto__ = ArrayBuffer.prototype;
+  Object.setPrototypeOf(AB, ArrayBuffer);
+  Object.setPrototypeOf(AB.prototype, ArrayBuffer.prototype);
   new Buffer(new AB());
 }, TypeError);
 
index 1a1d9c0..ca268fa 100644 (file)
@@ -5,8 +5,8 @@ const assert = require('assert');
 const Buffer = require('buffer').Buffer;
 
 function FakeBuffer() { }
-FakeBuffer.__proto__ = Buffer;
-FakeBuffer.prototype.__proto__ = Buffer.prototype;
+Object.setPrototypeOf(FakeBuffer, Buffer);
+Object.setPrototypeOf(FakeBuffer.prototype, Buffer.prototype);
 
 const fb = new FakeBuffer();
 
index ea61e50..be845c6 100644 (file)
@@ -24,8 +24,9 @@ const vals = [new T(4), T(4)];
 
 vals.forEach(function(t) {
   assert.equal(t.constructor, T);
-  assert.equal(t.__proto__, T.prototype);
-  assert.equal(t.__proto__.__proto__, Buffer.prototype);
+  assert.equal(Object.getPrototypeOf(t), T.prototype);
+  assert.equal(Object.getPrototypeOf(Object.getPrototypeOf(t)),
+    Buffer.prototype);
 
   t.fill(5);
   let cntr = 0;
index 89880af..2ebc653 100644 (file)
@@ -7,9 +7,9 @@ var spawn = require('child_process').spawn;
 var env = {
   'HELLO': 'WORLD'
 };
-env.__proto__ = {
+Object.setPrototypeOf(env, {
   'FOO': 'BAR'
-};
+});
 
 var child;
 if (common.isWindows) {