Skip to content

Commit

Permalink
Fix missing stacks in WWW warnings (#17638)
Browse files Browse the repository at this point in the history
  • Loading branch information
gaearon authored Dec 17, 2019
1 parent b66e86d commit 3c54df0
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 9 deletions.
2 changes: 2 additions & 0 deletions packages/shared/consoleWithStackDev.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ export function error(format, ...args) {
}

function printWarning(level, format, args) {
// When changing this logic, you might want to also
// update consoleWithStackDev.www.js as well.
if (__DEV__) {
const hasExistingStack =
args.length > 0 &&
Expand Down
46 changes: 37 additions & 9 deletions packages/shared/forks/consoleWithStackDev.www.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,43 @@
// This refers to a WWW module.
const warningWWW = require('warning');

export function warn() {
// TODO: use different level for "warn".
const args = Array.prototype.slice.call(arguments);
args.unshift(false);
warningWWW.apply(null, args);
export function warn(format, ...args) {
if (__DEV__) {
printWarning('warn', format, args);
}
}

export function error() {
const args = Array.prototype.slice.call(arguments);
args.unshift(false);
warningWWW.apply(null, args);
export function error(format, ...args) {
if (__DEV__) {
printWarning('error', format, args);
}
}

function printWarning(level, format, args) {
if (__DEV__) {
const hasExistingStack =
args.length > 0 &&
typeof args[args.length - 1] === 'string' &&
args[args.length - 1].indexOf('\n in') === 0;

if (!hasExistingStack) {
const React = require('react');
const ReactSharedInternals =
React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;
// Defensive in case this is fired before React is initialized.
if (ReactSharedInternals != null) {
const ReactDebugCurrentFrame =
ReactSharedInternals.ReactDebugCurrentFrame;
const stack = ReactDebugCurrentFrame.getStackAddendum();
if (stack !== '') {
format += '%s';
args.push(stack);
}
}
}
// TODO: don't ignore level and pass it down somewhere too.
args.unshift(format);
args.unshift(false);
warningWWW.apply(null, args);
}
}

0 comments on commit 3c54df0

Please sign in to comment.