mirror of
https://github.com/facebook/react.git
synced 2025-11-01 09:12:30 +00:00
85acf2d195
I'm pretty sure this is completely unnecessary even in www and RN because it's only useful if you use the mock scheduler which typically only we do in our own tests. But all our tests pass so unless www/RN does something with it, I don't think this is used. Also remove unnecessary `__DEV__` check. If it gets pulled in prod, we'd want to know about it.
58 lines
2.0 KiB
JavaScript
58 lines
2.0 KiB
JavaScript
/**
|
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*/
|
|
|
|
import ReactSharedInternals from 'shared/ReactSharedInternals';
|
|
import {enableOwnerStacks} from 'shared/ReactFeatureFlags';
|
|
|
|
export function setSuppressWarning(newSuppressWarning) {
|
|
// TODO: Noop. Delete.
|
|
}
|
|
|
|
// In DEV, calls to console.warn and console.error get replaced
|
|
// by calls to these methods by a Babel plugin.
|
|
//
|
|
// In PROD (or in packages without access to React internals),
|
|
// they are left as they are instead.
|
|
|
|
export function warn(format, ...args) {
|
|
printWarning('warn', format, args, new Error('react-stack-top-frame'));
|
|
}
|
|
|
|
export function error(format, ...args) {
|
|
printWarning('error', format, args, new Error('react-stack-top-frame'));
|
|
}
|
|
|
|
// eslint-disable-next-line react-internal/no-production-logging
|
|
const supportsCreateTask = __DEV__ && enableOwnerStacks && !!console.createTask;
|
|
|
|
export let isWritingAppendedStack = false;
|
|
|
|
function printWarning(level, format, args, currentStack) {
|
|
// When changing this logic, you might want to also
|
|
// update consoleWithStackDev.www.js as well.
|
|
if (__DEV__) {
|
|
if (!supportsCreateTask && ReactSharedInternals.getCurrentStack) {
|
|
// We only add the current stack to the console when createTask is not supported.
|
|
// Since createTask requires DevTools to be open to work, this means that stacks
|
|
// can be lost while DevTools isn't open but we can't detect this.
|
|
const stack = ReactSharedInternals.getCurrentStack(currentStack);
|
|
if (stack !== '') {
|
|
isWritingAppendedStack = true;
|
|
format += '%s';
|
|
args = args.concat([stack]);
|
|
}
|
|
}
|
|
|
|
args.unshift(format);
|
|
// We intentionally don't use spread (or .apply) directly because it
|
|
// breaks IE9: https://github.com/facebook/react/issues/13610
|
|
// eslint-disable-next-line react-internal/no-production-logging
|
|
Function.prototype.apply.call(console[level], console, args);
|
|
isWritingAppendedStack = false;
|
|
}
|
|
}
|