util: move .decorateErrorStack to internal/util
authorBen Noordhuis <info@bnoordhuis.nl>
Wed, 25 Nov 2015 21:37:43 +0000 (22:37 +0100)
committerMyles Borins <mborins@us.ibm.com>
Tue, 19 Jan 2016 19:52:29 +0000 (11:52 -0800)
Move the method that was added in commit 8ca412b from earlier this month
from lib/util.js to lib/internal/util.js.

Avoids exposing a method that we may not wish to expose just yet, seeing
how it relies on implementation details.

PR-URL: https://github.com/nodejs/node/pull/4026
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
lib/internal/util.js
lib/repl.js
lib/util.js
test/parallel/test-util-decorate-error-stack.js

index 5be073f..c34682e 100644 (file)
@@ -57,3 +57,21 @@ exports._deprecate = function(fn, msg) {
 
   return deprecated;
 };
+
+exports.decorateErrorStack = function decorateErrorStack(err) {
+  if (!(exports.isError(err) && err.stack))
+    return;
+
+  const arrow = exports.getHiddenValue(err, 'arrowMessage');
+
+  if (arrow)
+    err.stack = arrow + err.stack;
+};
+
+exports.isError = function isError(e) {
+  return exports.objectToString(e) === '[object Error]' || e instanceof Error;
+};
+
+exports.objectToString = function objectToString(o) {
+  return Object.prototype.toString.call(o);
+};
index 42fb6ad..80ec4de 100644 (file)
@@ -22,6 +22,7 @@
 'use strict';
 
 const internalModule = require('internal/module');
+const internalUtil = require('internal/util');
 const util = require('util');
 const inherits = util.inherits;
 const Stream = require('stream');
@@ -276,7 +277,7 @@ function REPLServer(prompt,
   self._domain.on('error', function(e) {
     debug('domain error');
     const top = replMap.get(self);
-    util.decorateErrorStack(e);
+    internalUtil.decorateErrorStack(e);
     top.outputStream.write((e.stack || e) + '\n');
     top.lineParser.reset();
     top.bufferedCommand = '';
index 63d1fcc..1a2f3f3 100644 (file)
@@ -5,6 +5,9 @@ const Buffer = require('buffer').Buffer;
 const internalUtil = require('internal/util');
 const binding = process.binding('util');
 
+const isError = internalUtil.isError;
+const objectToString = internalUtil.objectToString;
+
 var Debug;
 
 const formatRegExp = /%[sdj%]/g;
@@ -684,9 +687,6 @@ function isDate(d) {
 }
 exports.isDate = isDate;
 
-function isError(e) {
-  return objectToString(e) === '[object Error]' || e instanceof Error;
-}
 exports.isError = isError;
 
 function isFunction(arg) {
@@ -702,10 +702,6 @@ exports.isPrimitive = isPrimitive;
 
 exports.isBuffer = Buffer.isBuffer;
 
-function objectToString(o) {
-  return Object.prototype.toString.call(o);
-}
-
 
 function pad(n) {
   return n < 10 ? '0' + n.toString(10) : n.toString(10);
@@ -901,14 +897,3 @@ exports._exceptionWithHostPort = function(err,
   }
   return ex;
 };
-
-
-exports.decorateErrorStack = function(err) {
-  if (!(isError(err) && err.stack))
-    return;
-
-  const arrow = internalUtil.getHiddenValue(err, 'arrowMessage');
-
-  if (arrow)
-    err.stack = arrow + err.stack;
-};
index b609ee3..24fee56 100644 (file)
@@ -1,18 +1,19 @@
+// Flags: --expose_internals
 'use strict';
 const common = require('../common');
 const assert = require('assert');
-const util = require('util');
+const internalUtil = require('internal/util');
 
 assert.doesNotThrow(function() {
-  util.decorateErrorStack();
-  util.decorateErrorStack(null);
-  util.decorateErrorStack(1);
-  util.decorateErrorStack(true);
+  internalUtil.decorateErrorStack();
+  internalUtil.decorateErrorStack(null);
+  internalUtil.decorateErrorStack(1);
+  internalUtil.decorateErrorStack(true);
 });
 
 // Verify that a stack property is not added to non-Errors
 const obj = {};
-util.decorateErrorStack(obj);
+internalUtil.decorateErrorStack(obj);
 assert.strictEqual(obj.stack, undefined);
 
 // Verify that the stack is decorated when possible
@@ -23,7 +24,7 @@ try {
 } catch (e) {
   err = e;
   assert(!/var foo bar;/.test(err.stack));
-  util.decorateErrorStack(err);
+  internalUtil.decorateErrorStack(err);
 }
 
 assert(/var foo bar;/.test(err.stack));
@@ -31,5 +32,5 @@ assert(/var foo bar;/.test(err.stack));
 // Verify that the stack is unchanged when there is no arrow message
 err = new Error('foo');
 const originalStack = err.stack;
-util.decorateErrorStack(err);
+internalUtil.decorateErrorStack(err);
 assert.strictEqual(originalStack, err.stack);