Skip to content

Commit

Permalink
node: Add --throw-deprecation
Browse files Browse the repository at this point in the history
Extremely handy when tracking down a flood of recursive nextTick warnings.
  • Loading branch information
isaacs committed Mar 6, 2013
1 parent 25ba971 commit 5038f40
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 2 deletions.
2 changes: 2 additions & 0 deletions doc/node.1
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,8 @@ and servers.

--trace-deprecation show stack traces on deprecations

--throw-deprecation throw errors on deprecations

--v8-options print v8 command line options

--max-stack-size=val set max v8 stack size (bytes)
Expand Down
4 changes: 3 additions & 1 deletion lib/util.js
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,9 @@ exports.deprecate = function(fn, msg) {
var warned = false;
function deprecated() {
if (!warned) {
if (process.traceDeprecation) {
if (process.throwDeprecation) {
throw new Error(msg);
} else if (process.traceDeprecation) {
console.trace(msg);
} else {
console.error(msg);
Expand Down
9 changes: 9 additions & 0 deletions src/node.cc
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,7 @@ static Persistent<String> disposed_symbol;
static bool print_eval = false;
static bool force_repl = false;
static bool trace_deprecation = false;
static bool throw_deprecation = false;
static char *eval_string = NULL;
static int option_end_index = 0;
static bool use_debug_agent = false;
Expand Down Expand Up @@ -2414,6 +2415,11 @@ Handle<Object> SetupProcessObject(int argc, char *argv[]) {
process->Set(String::NewSymbol("noDeprecation"), True());
}

// --throw-deprecation
if (throw_deprecation) {
process->Set(String::NewSymbol("throwDeprecation"), True());
}

// --trace-deprecation
if (trace_deprecation) {
process->Set(String::NewSymbol("traceDeprecation"), True());
Expand Down Expand Up @@ -2666,6 +2672,9 @@ static void ParseArgs(int argc, char **argv) {
} else if (strcmp(arg, "--trace-deprecation") == 0) {
argv[i] = const_cast<char*>("");
trace_deprecation = true;
} else if (strcmp(arg, "--throw-deprecation") == 0) {
argv[i] = const_cast<char*>("");
throw_deprecation = true;
} else if (argv[i][0] != '-') {
break;
}
Expand Down
4 changes: 3 additions & 1 deletion src/node.js
Original file line number Diff line number Diff line change
Expand Up @@ -359,7 +359,9 @@
var msg = '(node) warning: Recursive process.nextTick detected. ' +
'This will break in the next version of node. ' +
'Please use setImmediate for recursive deferral.';
if (process.traceDeprecation)
if (process.throwDeprecation)
throw new Error(msg);
else if (process.traceDeprecation)
console.trace(msg);
else
console.error(msg);
Expand Down

0 comments on commit 5038f40

Please sign in to comment.