Bug 1625138 - Part 41: Remove no longer needed includes for mozilla/TypeTraits. r=froydnj
authorAndré Bargull <andre.bargull@gmail.com>
Sat, 28 Mar 2020 16:00:09 +0000
changeset 520958 29693da8f9587d1d8ff2fa4d359558c8c4faec91
parent 520957 43badf8b568e578d35f207536f21b907af21d31d
child 520959 f1f6abb3f29249c6d667d84558b9e38e5c0089bd
push id37260
push userrmaries@mozilla.com
push dateSat, 28 Mar 2020 21:40:49 +0000
treeherdermozilla-central@a177dd13e984 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersfroydnj
bugs1625138
milestone76.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1625138 - Part 41: Remove no longer needed includes for mozilla/TypeTraits. r=froydnj Also adds missing includes in some files, these were previously only transivitely included through mozilla/TypeTraits.h. Differential Revision: https://phabricator.services.mozilla.com/D68561
browser/app/winlauncher/freestanding/SafeThreadLocal.h
dom/animation/Animation.cpp
dom/animation/EffectCompositor.cpp
dom/animation/KeyframeEffect.cpp
dom/bindings/ToJSValue.h
dom/canvas/ProducerConsumerQueue.h
dom/indexedDB/ActorsChild.cpp
dom/media/MediaEventSource.h
dom/media/doctor/DDLoggedTypeTraits.h
dom/media/doctor/gtest/TestRollingNumber.cpp
dom/media/mp4/MP4Metadata.h
dom/media/webaudio/WebAudioUtils.h
dom/promise/Promise-inl.h
dom/promise/Promise.h
dom/quota/ActorsParent.cpp
gfx/2d/BasePoint.h
gfx/2d/BaseRect.h
gfx/2d/Coord.h
gfx/2d/Point.h
ipc/glue/FileDescriptor.cpp
ipc/glue/IPCMessageUtils.h
ipc/glue/ProtocolUtils.cpp
mfbt/ArrayUtils.h
mfbt/Atomics.h
mfbt/BufferList.h
mfbt/Casting.h
mfbt/CompactPair.h
mfbt/EndianUtils.h
mfbt/EnumTypeTraits.h
mfbt/FloatingPoint.h
mfbt/IntegerRange.h
mfbt/IntegerTypeTraits.h
mfbt/Latin1.h
mfbt/MathAlgorithms.h
mfbt/Maybe.h
mfbt/NonDereferenceable.h
mfbt/NotNull.h
mfbt/Range.h
mfbt/RefCounted.h
mfbt/Result.h
mfbt/ReverseIterator.h
mfbt/RollingMean.h
mfbt/Saturate.h
mfbt/SegmentedVector.h
mfbt/Span.h
mfbt/TextUtils.h
mfbt/ThreadLocal.h
mfbt/ThreadSafeWeakPtr.h
mfbt/Tuple.h
mfbt/UniquePtr.h
mfbt/Variant.h
mfbt/WeakPtr.h
mfbt/WrappingOperations.h
mfbt/tests/TestCompactPair.cpp
mfbt/tests/TestMaybe.cpp
mfbt/tests/TestTuple.cpp
mfbt/tests/TestUniquePtr.cpp
mfbt/tests/gtest/TestSpan.cpp
mozglue/dllservices/Authenticode.cpp
mozglue/misc/TimeStamp.h
mozglue/misc/interceptor/Arm64.h
mozglue/misc/nsWindowsDllInterceptor.h
mozglue/tests/interceptor/TestDllInterceptor.cpp
toolkit/components/telemetry/build_scripts/gen_histogram_enum.py
toolkit/crashreporter/ThreadAnnotation.cpp
toolkit/xre/ModuleEvaluator.cpp
tools/fuzzing/common/FuzzingMutate.h
tools/fuzzing/common/FuzzingTraits.h
tools/fuzzing/faulty/Faulty.cpp
tools/profiler/core/platform.cpp
widget/SystemTimeConverter.h
widget/android/nsAppShell.h
widget/android/nsWindow.cpp
widget/windows/ShellHeaderOnlyUtils.h
xpcom/base/HoldDropJSObjects.h
xpcom/base/nsCOMPtr.h
xpcom/base/nsCycleCollectionNoteChild.h
xpcom/base/nsISupportsUtils.h
xpcom/ds/ArrayIterator.h
xpcom/ds/Tokenizer.h
xpcom/ds/nsTHashtable.h
xpcom/reflect/xptinfo/xptcodegen.py
xpcom/string/nsTextFormatter.h
xpcom/string/nsUTF8Utils.h
xpcom/tests/gtest/TestNsDeque.cpp
xpcom/threads/MozPromise.h
xpcom/threads/PrioritizedEventQueue.h
xpcom/threads/nsProxyRelease.h
xpcom/threads/nsThreadUtils.h
--- a/browser/app/winlauncher/freestanding/SafeThreadLocal.h
+++ b/browser/app/winlauncher/freestanding/SafeThreadLocal.h
@@ -6,17 +6,16 @@
 
 #ifndef mozilla_freestanding_SafeThreadLocal_h
 #define mozilla_freestanding_SafeThreadLocal_h
 
 #include <type_traits>
 
 #include "mozilla/NativeNt.h"
 #include "mozilla/ThreadLocal.h"
-#include "mozilla/TypeTraits.h"
 
 namespace mozilla {
 namespace freestanding {
 
 // We cannot fall back to the Tls* APIs because kernel32 might not have been
 // loaded yet.
 #if defined(__MINGW32__) && !defined(HAVE_THREAD_TLS_KEYWORD)
 #  error "This code requires the compiler to have native TLS support"
--- a/dom/animation/Animation.cpp
+++ b/dom/animation/Animation.cpp
@@ -15,17 +15,16 @@
 #include "mozilla/dom/DocumentTimeline.h"
 #include "mozilla/dom/MutationObservers.h"
 #include "mozilla/AnimationEventDispatcher.h"
 #include "mozilla/AnimationTarget.h"
 #include "mozilla/AutoRestore.h"
 #include "mozilla/DeclarationBlock.h"
 #include "mozilla/Maybe.h"       // For Maybe
 #include "mozilla/StaticPrefs_dom.h"
-#include "mozilla/TypeTraits.h"  // For std::forward<>
 #include "nsAnimationManager.h"  // For CSSAnimation
 #include "nsComputedDOMStyle.h"
 #include "nsDOMMutationObserver.h"    // For nsAutoAnimationMutationBatch
 #include "nsDOMCSSAttrDeclaration.h"  // For nsDOMCSSAttributeDeclaration
 #include "nsThreadUtils.h"  // For nsRunnableMethod and nsRevocableEventPtr
 #include "nsTransitionManager.h"      // For CSSTransition
 #include "PendingAnimationTracker.h"  // For PendingAnimationTracker
 
--- a/dom/animation/EffectCompositor.cpp
+++ b/dom/animation/EffectCompositor.cpp
@@ -22,17 +22,16 @@
 #include "mozilla/LayerAnimationInfo.h"
 #include "mozilla/PresShell.h"
 #include "mozilla/PresShellInlines.h"
 #include "mozilla/RestyleManager.h"
 #include "mozilla/ServoBindings.h"  // Servo_GetProperties_Overriding_Animation
 #include "mozilla/ServoStyleSet.h"
 #include "mozilla/StaticPrefs_layers.h"
 #include "mozilla/StyleAnimationValue.h"
-#include "mozilla/TypeTraits.h"  // For std::forward<>
 #include "nsContentUtils.h"
 #include "nsCSSPseudoElements.h"
 #include "nsCSSPropertyIDSet.h"
 #include "nsCSSProps.h"
 #include "nsDisplayItemTypes.h"
 #include "nsAtom.h"
 #include "nsLayoutUtils.h"
 #include "nsTArray.h"
--- a/dom/animation/KeyframeEffect.cpp
+++ b/dom/animation/KeyframeEffect.cpp
@@ -21,17 +21,16 @@
 #include "mozilla/LookAndFeel.h"  // For LookAndFeel::GetInt
 #include "mozilla/KeyframeUtils.h"
 #include "mozilla/PresShell.h"
 #include "mozilla/PresShellInlines.h"
 #include "mozilla/ServoBindings.h"
 #include "mozilla/StaticPrefs_dom.h"
 #include "mozilla/StaticPrefs_gfx.h"
 #include "mozilla/StaticPrefs_layers.h"
-#include "mozilla/TypeTraits.h"
 #include "Layers.h"              // For Layer
 #include "nsComputedDOMStyle.h"  // nsComputedDOMStyle::GetComputedStyle
 #include "nsContentUtils.h"
 #include "nsCSSPropertyIDSet.h"
 #include "nsCSSProps.h"             // For nsCSSProps::PropHasFlags
 #include "nsCSSPseudoElements.h"    // For PseudoStyleType
 #include "nsDOMMutationObserver.h"  // For nsAutoAnimationMutationBatch
 #include "nsIFrame.h"
--- a/dom/bindings/ToJSValue.h
+++ b/dom/bindings/ToJSValue.h
@@ -2,17 +2,16 @@
 /* vim: set ts=8 sts=2 et sw=2 tw=80: */
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
  * You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef mozilla_dom_ToJSValue_h
 #define mozilla_dom_ToJSValue_h
 
-#include "mozilla/TypeTraits.h"
 #include "mozilla/Assertions.h"
 #include "mozilla/UniquePtr.h"
 #include "mozilla/dom/BindingUtils.h"
 #include "mozilla/dom/NonRefcountedDOMObject.h"
 #include "mozilla/dom/TypedArray.h"
 #include "jsapi.h"
 #include "js/Array.h"  // JS::NewArrayObject
 #include "nsISupports.h"
--- a/dom/canvas/ProducerConsumerQueue.h
+++ b/dom/canvas/ProducerConsumerQueue.h
@@ -14,17 +14,16 @@
 #include <utility>
 #include <vector>
 #include "mozilla/ipc/SharedMemoryBasic.h"
 #include "mozilla/Assertions.h"
 #include "mozilla/ipc/Shmem.h"
 #include "mozilla/ipc/ProtocolUtils.h"
 #include "mozilla/Logging.h"
 #include "mozilla/TimeStamp.h"
-#include "mozilla/TypeTraits.h"
 #include "nsString.h"
 #include "CrossProcessSemaphore.h"
 
 namespace IPC {
 
 template <typename T>
 struct ParamTraits;
 
--- a/dom/indexedDB/ActorsChild.cpp
+++ b/dom/indexedDB/ActorsChild.cpp
@@ -22,17 +22,16 @@
 #include "IndexedDatabaseInlines.h"
 #include "js/Array.h"  // JS::NewArrayObject, JS::SetArrayLength
 #include "js/Date.h"   // JS::NewDateObject, JS::TimeClip
 #include <mozIIPCBlobInputStream.h>
 #include "mozilla/BasicEvents.h"
 #include "mozilla/CycleCollectedJSRuntime.h"
 #include "mozilla/Maybe.h"
 #include "mozilla/SnappyUncompressInputStream.h"
-#include "mozilla/TypeTraits.h"
 #include "mozilla/dom/Element.h"
 #include "mozilla/dom/Event.h"
 #include "mozilla/dom/PermissionMessageUtils.h"
 #include "mozilla/dom/BrowserChild.h"
 #include "mozilla/dom/indexedDB/PBackgroundIDBDatabaseFileChild.h"
 #include "mozilla/dom/IPCBlobUtils.h"
 #include "mozilla/dom/WorkerPrivate.h"
 #include "mozilla/dom/WorkerRunnable.h"
--- a/dom/media/MediaEventSource.h
+++ b/dom/media/MediaEventSource.h
@@ -9,17 +9,16 @@
 
 #include <type_traits>
 #include <utility>
 
 #include "mozilla/AbstractThread.h"
 #include "mozilla/Atomics.h"
 #include "mozilla/Mutex.h"
 #include "mozilla/Tuple.h"
-#include "mozilla/TypeTraits.h"
 #include "mozilla/Unused.h"
 
 #include "nsISupportsImpl.h"
 #include "nsTArray.h"
 #include "nsThreadUtils.h"
 
 namespace mozilla {
 
--- a/dom/media/doctor/DDLoggedTypeTraits.h
+++ b/dom/media/doctor/DDLoggedTypeTraits.h
@@ -4,18 +4,16 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef DDLoggedTypeTraits_h_
 #define DDLoggedTypeTraits_h_
 
 #include <type_traits>
 
-#include "mozilla/TypeTraits.h"
-
 namespace mozilla {
 
 // Templated struct carrying compile-time information about C++ types that may
 // log messages (including about their lifetime and links to other objects.)
 // Classes should declare a specialization by using one of the macros below.
 template <typename T>
 struct DDLoggedTypeTraits;
 
--- a/dom/media/doctor/gtest/TestRollingNumber.cpp
+++ b/dom/media/doctor/gtest/TestRollingNumber.cpp
@@ -2,17 +2,16 @@
 /* vim: set ts=8 sts=2 et sw=2 tw=80: */
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
  * You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "RollingNumber.h"
 
 #include "mozilla/Assertions.h"
-#include "mozilla/TypeTraits.h"
 
 #include <cstdint>
 #include <gtest/gtest.h>
 #include <type_traits>
 
 using RN8 = mozilla::RollingNumber<uint8_t>;
 
 TEST(RollingNumber, Value)
--- a/dom/media/mp4/MP4Metadata.h
+++ b/dom/media/mp4/MP4Metadata.h
@@ -2,17 +2,16 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef MP4METADATA_H_
 #define MP4METADATA_H_
 
 #include <type_traits>
 
-#include "mozilla/TypeTraits.h"
 #include "mozilla/UniquePtr.h"
 #include "DecoderData.h"
 #include "Index.h"
 #include "MediaData.h"
 #include "MediaInfo.h"
 #include "MediaResult.h"
 #include "ByteStream.h"
 #include "mp4parse.h"
--- a/dom/media/webaudio/WebAudioUtils.h
+++ b/dom/media/webaudio/WebAudioUtils.h
@@ -5,17 +5,16 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef WebAudioUtils_h_
 #define WebAudioUtils_h_
 
 #include <cmath>
 #include <limits>
 #include <type_traits>
-#include "mozilla/TypeTraits.h"
 #include "mozilla/FloatingPoint.h"
 #include "MediaSegment.h"
 
 // Forward declaration
 typedef struct SpeexResamplerState_ SpeexResamplerState;
 
 namespace mozilla {
 
--- a/dom/promise/Promise-inl.h
+++ b/dom/promise/Promise-inl.h
@@ -6,17 +6,16 @@
 
 #ifndef mozilla_dom_Promise_inl_h
 #define mozilla_dom_Promise_inl_h
 
 #include <type_traits>
 #include <utility>
 
 #include "mozilla/TupleCycleCollection.h"
-#include "mozilla/TypeTraits.h"
 #include "mozilla/ResultExtensions.h"
 #include "mozilla/dom/PromiseNativeHandler.h"
 
 namespace mozilla {
 namespace dom {
 
 class PromiseNativeThenHandlerBase : public PromiseNativeHandler {
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
--- a/dom/promise/Promise.h
+++ b/dom/promise/Promise.h
@@ -11,17 +11,16 @@
 #include <utility>
 
 #include "js/Promise.h"
 #include "js/TypeDecls.h"
 #include "jspubtd.h"
 #include "mozilla/Attributes.h"
 #include "mozilla/ErrorResult.h"
 #include "mozilla/TimeStamp.h"
-#include "mozilla/TypeTraits.h"
 #include "mozilla/WeakPtr.h"
 #include "mozilla/dom/BindingDeclarations.h"
 #include "mozilla/dom/PromiseBinding.h"
 #include "mozilla/dom/ToJSValue.h"
 #include "nsAutoPtr.h"
 #include "nsCycleCollectionParticipant.h"
 #include "nsWrapperCache.h"
 
--- a/dom/quota/ActorsParent.cpp
+++ b/dom/quota/ActorsParent.cpp
@@ -47,17 +47,16 @@
 #include "mozilla/net/MozURL.h"
 #include "mozilla/Mutex.h"
 #include "mozilla/Preferences.h"
 #include "mozilla/Services.h"
 #include "mozilla/StaticPrefs_dom.h"
 #include "mozilla/StaticPtr.h"
 #include "mozilla/TextUtils.h"
 #include "mozilla/Telemetry.h"
-#include "mozilla/TypeTraits.h"
 #include "mozilla/Unused.h"
 #include "mozStorageCID.h"
 #include "mozStorageHelper.h"
 #include "nsAppDirectoryServiceDefs.h"
 #include "nsCharSeparatedTokenizer.h"
 #include "nsComponentManagerUtils.h"
 #include "nsAboutProtocolUtils.h"
 #include "nsCharSeparatedTokenizer.h"
--- a/gfx/2d/BasePoint.h
+++ b/gfx/2d/BasePoint.h
@@ -7,17 +7,16 @@
 #ifndef MOZILLA_GFX_BASEPOINT_H_
 #define MOZILLA_GFX_BASEPOINT_H_
 
 #include <cmath>
 #include <ostream>
 #include <type_traits>
 #include "mozilla/Attributes.h"
 #include "mozilla/FloatingPoint.h"
-#include "mozilla/TypeTraits.h"
 
 namespace mozilla {
 namespace gfx {
 
 /**
  * Do not use this class directly. Subclass it, pass that subclass as the
  * Sub parameter, and only use that subclass. This allows methods to safely
  * cast 'this' to 'Sub*'.
--- a/gfx/2d/BaseRect.h
+++ b/gfx/2d/BaseRect.h
@@ -9,17 +9,16 @@
 
 #include <algorithm>
 #include <cmath>
 #include <ostream>
 #include <type_traits>
 
 #include "mozilla/Assertions.h"
 #include "mozilla/FloatingPoint.h"
-#include "mozilla/TypeTraits.h"
 #include "Types.h"
 
 namespace mozilla {
 namespace gfx {
 
 /**
  * Rectangles have two interpretations: a set of (zero-size) points,
  * and a rectangular area of the plane. Most rectangle operations behave
--- a/gfx/2d/Coord.h
+++ b/gfx/2d/Coord.h
@@ -3,17 +3,16 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef MOZILLA_GFX_COORD_H_
 #define MOZILLA_GFX_COORD_H_
 
 #include "mozilla/Attributes.h"
-#include "mozilla/TypeTraits.h"  // For IsSame
 #include "Types.h"
 #include "BaseCoord.h"
 
 #include <cmath>
 #include <type_traits>
 
 namespace mozilla {
 
--- a/gfx/2d/Point.h
+++ b/gfx/2d/Point.h
@@ -11,17 +11,16 @@
 #include "Types.h"
 #include "Coord.h"
 #include "BaseCoord.h"
 #include "BasePoint.h"
 #include "BasePoint3D.h"
 #include "BasePoint4D.h"
 #include "BaseSize.h"
 #include "mozilla/Maybe.h"
-#include "mozilla/TypeTraits.h"
 
 #include <cmath>
 #include <type_traits>
 
 namespace mozilla {
 
 template <typename>
 struct IsPixel;
--- a/ipc/glue/FileDescriptor.cpp
+++ b/ipc/glue/FileDescriptor.cpp
@@ -2,17 +2,16 @@
 /* vim: set ts=8 sts=2 et sw=2 tw=80: */
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "FileDescriptor.h"
 
 #include "mozilla/Assertions.h"
-#include "mozilla/TypeTraits.h"
 #include "nsDebug.h"
 
 #ifdef XP_WIN
 #  include <windows.h>
 #  include "ProtocolUtils.h"
 #else  // XP_WIN
 #  include <unistd.h>
 #endif  // XP_WIN
--- a/ipc/glue/IPCMessageUtils.h
+++ b/ipc/glue/IPCMessageUtils.h
@@ -17,17 +17,16 @@
 #include "mozilla/EnumSet.h"
 #include "mozilla/EnumTypeTraits.h"
 #include "mozilla/Maybe.h"
 #include "mozilla/net/WebSocketFrame.h"
 #include "mozilla/TimeStamp.h"
 #ifdef XP_WIN
 #  include "mozilla/TimeStamp_windows.h"
 #endif
-#include "mozilla/TypeTraits.h"
 #include "mozilla/IntegerTypeTraits.h"
 #include "mozilla/Vector.h"
 
 #include <limits>
 #include <stdint.h>
 #include <type_traits>
 #include <vector>
 
--- a/ipc/glue/ProtocolUtils.cpp
+++ b/ipc/glue/ProtocolUtils.cpp
@@ -25,18 +25,16 @@
 
 #if defined(MOZ_SANDBOX) && defined(XP_WIN)
 #  include "mozilla/sandboxTarget.h"
 #endif
 
 #if defined(XP_WIN)
 #  include "aclapi.h"
 #  include "sddl.h"
-
-#  include "mozilla/TypeTraits.h"
 #endif
 
 using namespace IPC;
 
 using base::GetCurrentProcId;
 using base::ProcessHandle;
 using base::ProcessId;
 
--- a/mfbt/ArrayUtils.h
+++ b/mfbt/ArrayUtils.h
@@ -18,17 +18,16 @@
 #include <stddef.h>
 
 #ifdef __cplusplus
 #  include <type_traits>
 
 #  include "mozilla/Alignment.h"
 #  include "mozilla/Array.h"
 #  include "mozilla/EnumeratedArray.h"
-#  include "mozilla/TypeTraits.h"
 
 namespace mozilla {
 
 /*
  * Safely subtract two pointers when it is known that aEnd >= aBegin, yielding a
  * size_t result.
  *
  * Ordinary pointer subtraction yields a ptrdiff_t result, which, being signed,
--- a/mfbt/Atomics.h
+++ b/mfbt/Atomics.h
@@ -14,17 +14,16 @@
  */
 
 #ifndef mozilla_Atomics_h
 #define mozilla_Atomics_h
 
 #include "mozilla/Assertions.h"
 #include "mozilla/Attributes.h"
 #include "mozilla/Compiler.h"
-#include "mozilla/TypeTraits.h"
 
 #include <atomic>
 
 #include <stdint.h>
 #include <type_traits>
 
 namespace mozilla {
 
--- a/mfbt/BufferList.h
+++ b/mfbt/BufferList.h
@@ -12,17 +12,16 @@
 #include <algorithm>
 #include <type_traits>
 #include <utility>
 
 #include "mozilla/AllocPolicy.h"
 #include "mozilla/Maybe.h"
 #include "mozilla/MemoryReporting.h"
 #include "mozilla/ScopeExit.h"
-#include "mozilla/TypeTraits.h"
 #include "mozilla/Types.h"
 #include "mozilla/Vector.h"
 
 // BufferList represents a sequence of buffers of data. A BufferList can choose
 // to own its buffers or not. The class handles writing to the buffers,
 // iterating over them, and reading data out. Unlike SegmentedVector, the
 // buffers may be of unequal size. Like SegmentedVector, BufferList is a nice
 // way to avoid large contiguous allocations (which can trigger OOMs).
--- a/mfbt/Casting.h
+++ b/mfbt/Casting.h
@@ -5,17 +5,16 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 /* Cast operations to supplement the built-in casting operations. */
 
 #ifndef mozilla_Casting_h
 #define mozilla_Casting_h
 
 #include "mozilla/Assertions.h"
-#include "mozilla/TypeTraits.h"
 
 #include <cstring>
 #include <limits.h>
 #include <type_traits>
 
 namespace mozilla {
 
 /**
--- a/mfbt/CompactPair.h
+++ b/mfbt/CompactPair.h
@@ -8,17 +8,16 @@
 
 #ifndef mozilla_CompactPair_h
 #define mozilla_CompactPair_h
 
 #include <type_traits>
 #include <utility>
 
 #include "mozilla/Attributes.h"
-#include "mozilla/TypeTraits.h"
 
 namespace mozilla {
 
 namespace detail {
 
 enum StorageType { AsBase, AsMember };
 
 // Optimize storage using the Empty Base Optimization -- that empty base classes
--- a/mfbt/EndianUtils.h
+++ b/mfbt/EndianUtils.h
@@ -65,17 +65,16 @@
 
 #ifndef mozilla_EndianUtils_h
 #define mozilla_EndianUtils_h
 
 #include "mozilla/Assertions.h"
 #include "mozilla/Attributes.h"
 #include "mozilla/Compiler.h"
 #include "mozilla/DebugOnly.h"
-#include "mozilla/TypeTraits.h"
 
 #include <stdint.h>
 #include <string.h>
 
 #if defined(_MSC_VER)
 #  include <stdlib.h>
 #  pragma intrinsic(_byteswap_ushort)
 #  pragma intrinsic(_byteswap_ulong)
--- a/mfbt/EnumTypeTraits.h
+++ b/mfbt/EnumTypeTraits.h
@@ -3,16 +3,17 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 /* Type traits for enums. */
 
 #ifndef mozilla_EnumTypeTraits_h
 #define mozilla_EnumTypeTraits_h
 
+#include <stddef.h>
 #include <type_traits>
 
 namespace mozilla {
 
 namespace detail {
 
 template <size_t EnumSize, bool EnumSigned, size_t StorageSize,
           bool StorageSigned>
--- a/mfbt/FloatingPoint.h
+++ b/mfbt/FloatingPoint.h
@@ -10,17 +10,16 @@
 #define mozilla_FloatingPoint_h
 
 #include "mozilla/Assertions.h"
 #include "mozilla/Attributes.h"
 #include "mozilla/Casting.h"
 #include "mozilla/MathAlgorithms.h"
 #include "mozilla/MemoryChecking.h"
 #include "mozilla/Types.h"
-#include "mozilla/TypeTraits.h"
 
 #include <limits>
 #include <stdint.h>
 #include <type_traits>
 
 namespace mozilla {
 
 /*
--- a/mfbt/IntegerRange.h
+++ b/mfbt/IntegerRange.h
@@ -6,17 +6,16 @@
 
 /* Iterator over ranges of integers */
 
 #ifndef mozilla_IntegerRange_h
 #define mozilla_IntegerRange_h
 
 #include "mozilla/Assertions.h"
 #include "mozilla/ReverseIterator.h"
-#include "mozilla/TypeTraits.h"
 
 #include <type_traits>
 
 namespace mozilla {
 
 namespace detail {
 
 template <typename IntTypeT>
--- a/mfbt/IntegerTypeTraits.h
+++ b/mfbt/IntegerTypeTraits.h
@@ -4,17 +4,17 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 /* Helpers to manipulate integer types that don't fit in TypeTraits.h */
 
 #ifndef mozilla_IntegerTypeTraits_h
 #define mozilla_IntegerTypeTraits_h
 
-#include "mozilla/TypeTraits.h"
+#include <stddef.h>
 #include <stdint.h>
 #include <type_traits>
 
 namespace mozilla {
 
 namespace detail {
 
 /**
--- a/mfbt/Latin1.h
+++ b/mfbt/Latin1.h
@@ -12,17 +12,16 @@
 #ifndef mozilla_Latin1_h
 #define mozilla_Latin1_h
 
 #include <type_traits>
 
 #include "mozilla/JsRust.h"
 #include "mozilla/Span.h"
 #include "mozilla/Tuple.h"
-#include "mozilla/TypeTraits.h"
 
 #if MOZ_HAS_JSRUST()
 #  include "encoding_rs_mem.h"
 #endif
 
 namespace mozilla {
 
 namespace detail {
--- a/mfbt/MathAlgorithms.h
+++ b/mfbt/MathAlgorithms.h
@@ -5,17 +5,16 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 /* mfbt maths algorithms. */
 
 #ifndef mozilla_MathAlgorithms_h
 #define mozilla_MathAlgorithms_h
 
 #include "mozilla/Assertions.h"
-#include "mozilla/TypeTraits.h"
 
 #include <cmath>
 #include <limits.h>
 #include <stdint.h>
 #include <type_traits>
 
 namespace mozilla {
 
--- a/mfbt/Maybe.h
+++ b/mfbt/Maybe.h
@@ -15,17 +15,16 @@
 #include <utility>
 
 #include "mozilla/Alignment.h"
 #include "mozilla/Assertions.h"
 #include "mozilla/Attributes.h"
 #include "mozilla/MemoryChecking.h"
 #include "mozilla/OperatorNewExtensions.h"
 #include "mozilla/Poison.h"
-#include "mozilla/TypeTraits.h"
 
 class nsCycleCollectionTraversalCallback;
 
 template <typename T>
 inline void CycleCollectionNoteChild(
     nsCycleCollectionTraversalCallback& aCallback, T* aChild, const char* aName,
     uint32_t aFlags);
 
--- a/mfbt/NonDereferenceable.h
+++ b/mfbt/NonDereferenceable.h
@@ -5,17 +5,16 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef mozilla_NonDereferenceable_h
 #define mozilla_NonDereferenceable_h
 
 /* A pointer wrapper indicating that the pointer should not be dereferenced. */
 
 #include "mozilla/Attributes.h"
-#include "mozilla/TypeTraits.h"
 
 #include <cstdint>
 
 // Macro indicating that a function manipulates a pointer that will not be
 // dereferenced, and therefore there is no need to check the object.
 #if defined(__clang__)
 #  define NO_POINTEE_CHECKS __attribute__((no_sanitize("vptr")))
 #else
--- a/mfbt/NotNull.h
+++ b/mfbt/NotNull.h
@@ -63,17 +63,16 @@
 // for the last one, where the handle type is |void|. See below.
 
 #include <stddef.h>
 
 #include <type_traits>
 #include <utility>
 
 #include "mozilla/Assertions.h"
-#include "mozilla/TypeTraits.h"
 
 namespace mozilla {
 
 // NotNull can be used to wrap a "base" pointer (raw or smart) to indicate it
 // is not null. Some examples:
 //
 // - NotNull<char*>
 // - NotNull<RefPtr<Event>>
--- a/mfbt/Range.h
+++ b/mfbt/Range.h
@@ -3,17 +3,16 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef mozilla_Range_h
 #define mozilla_Range_h
 
 #include "mozilla/RangedPtr.h"
-#include "mozilla/TypeTraits.h"
 #include "mozilla/Span.h"
 
 #include <stddef.h>
 #include <type_traits>
 
 namespace mozilla {
 
 // Range<T> is a tuple containing a pointer and a length.
--- a/mfbt/RefCounted.h
+++ b/mfbt/RefCounted.h
@@ -12,17 +12,16 @@
 #include <atomic>
 #include <utility>
 
 #include "mozilla/AlreadyAddRefed.h"
 #include "mozilla/Assertions.h"
 #include "mozilla/Atomics.h"
 #include "mozilla/Attributes.h"
 #include "mozilla/RefCountType.h"
-#include "mozilla/TypeTraits.h"
 
 #if defined(MOZILLA_INTERNAL_API)
 #  include "nsXPCOM.h"
 #endif
 
 #if defined(MOZILLA_INTERNAL_API) && \
     (defined(DEBUG) || defined(FORCE_BUILD_REFCNT_LOGGING))
 #  define MOZ_REFCOUNTED_LEAK_CHECKING
--- a/mfbt/Result.h
+++ b/mfbt/Result.h
@@ -9,17 +9,16 @@
 #ifndef mozilla_Result_h
 #define mozilla_Result_h
 
 #include <type_traits>
 #include "mozilla/Alignment.h"
 #include "mozilla/Assertions.h"
 #include "mozilla/Attributes.h"
 #include "mozilla/Types.h"
-#include "mozilla/TypeTraits.h"
 #include "mozilla/Variant.h"
 
 namespace mozilla {
 
 /**
  * Empty struct, indicating success for operations that have no return value.
  * For example, if you declare another empty struct `struct OutOfMemory {};`,
  * then `Result<Ok, OutOfMemory>` represents either success or OOM.
--- a/mfbt/ReverseIterator.h
+++ b/mfbt/ReverseIterator.h
@@ -9,17 +9,16 @@
  * in the negative direction.) */
 
 #ifndef mozilla_ReverseIterator_h
 #define mozilla_ReverseIterator_h
 
 #include <utility>
 
 #include "mozilla/Attributes.h"
-#include "mozilla/TypeTraits.h"
 
 namespace mozilla {
 
 template <typename IteratorT>
 class ReverseIterator {
  public:
   template <typename Iterator>
   explicit ReverseIterator(Iterator aIter) : mCurrent(aIter) {}
--- a/mfbt/RollingMean.h
+++ b/mfbt/RollingMean.h
@@ -5,17 +5,16 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 /* Calculate the rolling mean of a series of values. */
 
 #ifndef mozilla_RollingMean_h_
 #define mozilla_RollingMean_h_
 
 #include "mozilla/Assertions.h"
-#include "mozilla/TypeTraits.h"
 #include "mozilla/Vector.h"
 
 #include <stddef.h>
 #include <type_traits>
 
 namespace mozilla {
 
 /**
--- a/mfbt/Saturate.h
+++ b/mfbt/Saturate.h
@@ -5,21 +5,21 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 /* Provides saturation arithmetics for scalar types. */
 
 #ifndef mozilla_Saturate_h
 #define mozilla_Saturate_h
 
 #include <limits>
+#include <stdint.h>
 #include <type_traits>
 #include <utility>
 
 #include "mozilla/Attributes.h"
-#include "mozilla/TypeTraits.h"
 
 namespace mozilla {
 namespace detail {
 
 /**
  * |SaturateOp<T>| wraps scalar values for saturation arithmetics. Usage:
  *
  *    uint32_t value = 1;
--- a/mfbt/SegmentedVector.h
+++ b/mfbt/SegmentedVector.h
@@ -24,17 +24,16 @@
 #include <utility>
 
 #include "mozilla/AllocPolicy.h"
 #include "mozilla/Array.h"
 #include "mozilla/Attributes.h"
 #include "mozilla/LinkedList.h"
 #include "mozilla/MemoryReporting.h"
 #include "mozilla/OperatorNewExtensions.h"
-#include "mozilla/TypeTraits.h"
 
 namespace mozilla {
 
 // |IdealSegmentSize| specifies how big each segment will be in bytes (or as
 // close as is possible). Use the following guidelines to choose a size.
 //
 // - It should be a power-of-two, to avoid slop.
 //
--- a/mfbt/Span.h
+++ b/mfbt/Span.h
@@ -29,17 +29,16 @@
 #include <limits>
 #include <type_traits>
 #include <utility>
 
 #include "mozilla/Array.h"
 #include "mozilla/Assertions.h"
 #include "mozilla/Casting.h"
 #include "mozilla/IntegerTypeTraits.h"
-#include "mozilla/TypeTraits.h"
 #include "mozilla/UniquePtr.h"
 
 namespace mozilla {
 
 // Stuff from gsl_util
 
 // narrow_cast(): a searchable way to do narrowing casts of values
 template <class T, class U>
--- a/mfbt/TextUtils.h
+++ b/mfbt/TextUtils.h
@@ -6,17 +6,16 @@
 
 /* Character/text operations. */
 
 #ifndef mozilla_TextUtils_h
 #define mozilla_TextUtils_h
 
 #include "mozilla/Assertions.h"
 #include "mozilla/Latin1.h"
-#include "mozilla/TypeTraits.h"
 
 #ifdef MOZ_HAS_JSRUST
 // Can't include mozilla/Encoding.h here.
 extern "C" {
 // Declared as uint8_t instead of char to match declaration in another header.
 size_t encoding_ascii_valid_up_to(uint8_t const* buffer, size_t buffer_len);
 }
 #endif
--- a/mfbt/ThreadLocal.h
+++ b/mfbt/ThreadLocal.h
@@ -12,17 +12,16 @@
 #if !defined(XP_WIN)
 #  include <pthread.h>
 #endif
 
 #include <type_traits>
 
 #include "mozilla/Assertions.h"
 #include "mozilla/Attributes.h"
-#include "mozilla/TypeTraits.h"
 
 namespace mozilla {
 
 namespace detail {
 
 #ifdef XP_MACOSX
 #  if defined(__has_feature)
 #    if __has_feature(cxx_thread_local)
--- a/mfbt/ThreadSafeWeakPtr.h
+++ b/mfbt/ThreadSafeWeakPtr.h
@@ -56,17 +56,16 @@
 
 #ifndef mozilla_ThreadSafeWeakPtr_h
 #define mozilla_ThreadSafeWeakPtr_h
 
 #include "mozilla/Assertions.h"
 #include "mozilla/Atomics.h"
 #include "mozilla/RefCounted.h"
 #include "mozilla/RefPtr.h"
-#include "mozilla/TypeTraits.h"
 #include "mozilla/Unused.h"
 
 #include <limits>
 
 namespace mozilla {
 
 template <typename T>
 class ThreadSafeWeakPtr;
--- a/mfbt/Tuple.h
+++ b/mfbt/Tuple.h
@@ -11,17 +11,16 @@
 
 #include <stddef.h>
 
 #include <type_traits>
 #include <utility>
 
 #include "mozilla/CompactPair.h"
 #include "mozilla/TemplateLib.h"
-#include "mozilla/TypeTraits.h"
 
 namespace mozilla {
 
 namespace detail {
 
 /*
  * A helper class that allows passing around multiple variadic argument lists
  * by grouping them.
--- a/mfbt/UniquePtr.h
+++ b/mfbt/UniquePtr.h
@@ -11,17 +11,16 @@
 
 #include <type_traits>
 #include <utility>
 
 #include "mozilla/Assertions.h"
 #include "mozilla/Attributes.h"
 #include "mozilla/CompactPair.h"
 #include "mozilla/Compiler.h"
-#include "mozilla/TypeTraits.h"
 
 namespace mozilla {
 
 template <typename T>
 class DefaultDelete;
 template <typename T, class D = DefaultDelete<T>>
 class UniquePtr;
 
--- a/mfbt/Variant.h
+++ b/mfbt/Variant.h
@@ -9,17 +9,16 @@
 #include <new>
 #include <stdint.h>
 
 #include "mozilla/Assertions.h"
 #include "mozilla/FunctionTypeTraits.h"
 #include "mozilla/HashFunctions.h"
 #include "mozilla/OperatorNewExtensions.h"
 #include "mozilla/TemplateLib.h"
-#include "mozilla/TypeTraits.h"
 #include <type_traits>
 #include <utility>
 
 #ifndef mozilla_Variant_h
 #  define mozilla_Variant_h
 
 namespace IPC {
 template <typename T>
--- a/mfbt/WeakPtr.h
+++ b/mfbt/WeakPtr.h
@@ -68,17 +68,16 @@
 #define mozilla_WeakPtr_h
 
 #include "mozilla/ArrayUtils.h"
 #include "mozilla/Assertions.h"
 #include "mozilla/Attributes.h"
 #include "mozilla/Maybe.h"
 #include "mozilla/RefCounted.h"
 #include "mozilla/RefPtr.h"
-#include "mozilla/TypeTraits.h"
 
 #include <string.h>
 #include <type_traits>
 
 #if defined(MOZILLA_INTERNAL_API)
 // For thread safety checking.
 #  include "nsISupportsImpl.h"
 #endif
--- a/mfbt/WrappingOperations.h
+++ b/mfbt/WrappingOperations.h
@@ -20,17 +20,16 @@
  *      build/autoconf/sanitize.m4), that in appropriately configured builds
  *      verify at runtime that integral arithmetic doesn't overflow.
  */
 
 #ifndef mozilla_WrappingOperations_h
 #define mozilla_WrappingOperations_h
 
 #include "mozilla/Attributes.h"
-#include "mozilla/TypeTraits.h"
 
 #include <limits.h>
 #include <type_traits>
 
 namespace mozilla {
 
 namespace detail {
 
--- a/mfbt/tests/TestCompactPair.cpp
+++ b/mfbt/tests/TestCompactPair.cpp
@@ -2,17 +2,16 @@
 /* vim: set ts=8 sts=2 et sw=2 tw=80: */
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
  * You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include <type_traits>
 
 #include "mozilla/CompactPair.h"
-#include "mozilla/TypeTraits.h"
 
 using mozilla::CompactPair;
 using mozilla::MakeCompactPair;
 
 // Sizes aren't part of the guaranteed CompactPair interface, but we want to
 // verify our attempts at compactness through EBO are moderately functional,
 // *somewhere*.
 #define INSTANTIATE(T1, T2, name, size)                                        \
--- a/mfbt/tests/TestMaybe.cpp
+++ b/mfbt/tests/TestMaybe.cpp
@@ -6,17 +6,16 @@
 #include <type_traits>
 #include <utility>
 
 #include "mozilla/Assertions.h"
 #include "mozilla/Attributes.h"
 #include "mozilla/Compiler.h"
 #include "mozilla/Maybe.h"
 #include "mozilla/TemplateLib.h"
-#include "mozilla/TypeTraits.h"
 #include "mozilla/Types.h"
 #include "mozilla/UniquePtr.h"
 
 using mozilla::Maybe;
 using mozilla::Nothing;
 using mozilla::Some;
 using mozilla::SomeRef;
 using mozilla::ToMaybe;
--- a/mfbt/tests/TestTuple.cpp
+++ b/mfbt/tests/TestTuple.cpp
@@ -7,17 +7,16 @@
 #include <stddef.h>
 
 #include <type_traits>
 #include <utility>
 
 #include "mozilla/Assertions.h"
 #include "mozilla/CompactPair.h"
 #include "mozilla/Tuple.h"
-#include "mozilla/TypeTraits.h"
 #include "mozilla/UniquePtr.h"
 #include "mozilla/Unused.h"
 
 using mozilla::CompactPair;
 using mozilla::Get;
 using mozilla::MakeTuple;
 using mozilla::MakeUnique;
 using mozilla::Tie;
--- a/mfbt/tests/TestUniquePtr.cpp
+++ b/mfbt/tests/TestUniquePtr.cpp
@@ -6,17 +6,16 @@
 
 #include <stddef.h>
 
 #include <type_traits>
 #include <utility>
 
 #include "mozilla/Assertions.h"
 #include "mozilla/Compiler.h"
-#include "mozilla/TypeTraits.h"
 #include "mozilla/UniquePtr.h"
 #include "mozilla/UniquePtrExtensions.h"
 #include "mozilla/Vector.h"
 
 using mozilla::DefaultDelete;
 using mozilla::MakeUnique;
 using mozilla::UniqueFreePtr;
 using mozilla::UniquePtr;
--- a/mfbt/tests/gtest/TestSpan.cpp
+++ b/mfbt/tests/gtest/TestSpan.cpp
@@ -19,17 +19,16 @@
 
 #include "gtest/gtest.h"
 
 #include "mozilla/Span.h"
 
 #include "nsString.h"
 #include "nsTArray.h"
 #include "mozilla/Range.h"
-#include "mozilla/TypeTraits.h"
 
 #include <type_traits>
 
 #define SPAN_TEST(name) TEST(SpanTest, name)
 #define CHECK_THROW(a, b)
 
 using namespace mozilla;
 
--- a/mozglue/dllservices/Authenticode.cpp
+++ b/mozglue/dllservices/Authenticode.cpp
@@ -15,17 +15,16 @@
 #endif  // defined(NTDDI_VERSION)
 
 #include "Authenticode.h"
 
 #include "mozilla/ArrayUtils.h"
 #include "mozilla/Assertions.h"
 #include "mozilla/DynamicallyLinkedFunctionPtr.h"
 #include "mozilla/ScopeExit.h"
-#include "mozilla/TypeTraits.h"
 #include "mozilla/UniquePtr.h"
 #include "mozilla/WindowsVersion.h"
 #include "nsWindowsHelpers.h"
 
 #include <windows.h>
 #include <softpub.h>
 #include <wincrypt.h>
 #include <wintrust.h>
--- a/mozglue/misc/TimeStamp.h
+++ b/mozglue/misc/TimeStamp.h
@@ -9,17 +9,16 @@
 
 #include <stdint.h>
 #include <algorithm>  // for std::min, std::max
 #include <ostream>
 #include <type_traits>
 #include "mozilla/Assertions.h"
 #include "mozilla/Attributes.h"
 #include "mozilla/FloatingPoint.h"
-#include "mozilla/TypeTraits.h"
 #include "mozilla/Types.h"
 
 namespace IPC {
 template <typename T>
 struct ParamTraits;
 }  // namespace IPC
 
 #ifdef XP_WIN
--- a/mozglue/misc/interceptor/Arm64.h
+++ b/mozglue/misc/interceptor/Arm64.h
@@ -11,17 +11,16 @@
 
 #include "mozilla/Assertions.h"
 #include "mozilla/CheckedInt.h"
 #include "mozilla/MathAlgorithms.h"
 #include "mozilla/Maybe.h"
 #include "mozilla/Result.h"
 #include "mozilla/Saturate.h"
 #include "mozilla/Types.h"
-#include "mozilla/TypeTraits.h"
 
 namespace mozilla {
 namespace interceptor {
 namespace arm64 {
 
 // clang-format off
 enum class IntegerConditionCode : uint8_t {
   // From the ARMv8 Architectural Reference Manual, Section C1.2.4
--- a/mozglue/misc/nsWindowsDllInterceptor.h
+++ b/mozglue/misc/nsWindowsDllInterceptor.h
@@ -16,17 +16,16 @@
 #include "mozilla/ArrayUtils.h"
 #include "mozilla/Assertions.h"
 #include "mozilla/Atomics.h"
 #include "mozilla/Attributes.h"
 #include "mozilla/CheckedInt.h"
 #include "mozilla/DebugOnly.h"
 #include "mozilla/NativeNt.h"
 #include "mozilla/Tuple.h"
-#include "mozilla/TypeTraits.h"
 #include "mozilla/Types.h"
 #include "mozilla/UniquePtr.h"
 #include "mozilla/Vector.h"
 #include "mozilla/interceptor/MMPolicies.h"
 #include "mozilla/interceptor/PatcherDetour.h"
 #include "mozilla/interceptor/PatcherNopSpace.h"
 #include "mozilla/interceptor/VMSharingPolicies.h"
 #include "nsWindowsHelpers.h"
--- a/mozglue/tests/interceptor/TestDllInterceptor.cpp
+++ b/mozglue/tests/interceptor/TestDllInterceptor.cpp
@@ -11,17 +11,16 @@
 #include <security.h>
 #include <wininet.h>
 #include <schnlsp.h>
 #include <winternl.h>
 #include <processthreadsapi.h>
 
 #include "AssemblyPayloads.h"
 #include "mozilla/DynamicallyLinkedFunctionPtr.h"
-#include "mozilla/TypeTraits.h"
 #include "mozilla/UniquePtr.h"
 #include "mozilla/WindowsVersion.h"
 #include "nsWindowsDllInterceptor.h"
 #include "nsWindowsHelpers.h"
 
 NTSTATUS NTAPI NtFlushBuffersFile(HANDLE, PIO_STATUS_BLOCK);
 NTSTATUS NTAPI NtReadFile(HANDLE, HANDLE, PIO_APC_ROUTINE, PVOID,
                           PIO_STATUS_BLOCK, PVOID, ULONG, PLARGE_INTEGER,
--- a/toolkit/components/telemetry/build_scripts/gen_histogram_enum.py
+++ b/toolkit/components/telemetry/build_scripts/gen_histogram_enum.py
@@ -24,17 +24,16 @@ import buildconfig
 banner = """/* This file is auto-generated, see gen_histogram_enum.py.  */
 """
 
 header = """
 #ifndef mozilla_TelemetryHistogramEnums_h
 #define mozilla_TelemetryHistogramEnums_h
 
 #include "mozilla/TemplateLib.h"
-#include "mozilla/TypeTraits.h"
 
 namespace mozilla {
 namespace Telemetry {
 """
 
 footer = """
 } // namespace mozilla
 } // namespace Telemetry
--- a/toolkit/crashreporter/ThreadAnnotation.cpp
+++ b/toolkit/crashreporter/ThreadAnnotation.cpp
@@ -3,17 +3,16 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "ThreadAnnotation.h"
 
 #include <stddef.h>
 
 #include "mozilla/Assertions.h"
 #include "mozilla/StaticMutex.h"
-#include "mozilla/TypeTraits.h"
 #include "mozilla/UniquePtr.h"
 
 #include "prthread.h"
 #include "nsDebug.h"
 #include "nsExceptionHandler.h"
 #include "nsString.h"
 #include "nsTArray.h"
 
--- a/toolkit/xre/ModuleEvaluator.cpp
+++ b/toolkit/xre/ModuleEvaluator.cpp
@@ -9,17 +9,16 @@
 #include <algorithm>  // For std::find()
 #include <type_traits>
 
 #include <windows.h>
 #include <shlobj.h>
 
 #include "mozilla/ArrayUtils.h"
 #include "mozilla/ModuleVersionInfo.h"
-#include "mozilla/TypeTraits.h"
 #include "mozilla/UniquePtr.h"
 #include "mozilla/Unused.h"
 #include "mozilla/WinDllServices.h"
 #include "mozilla/WinHeaderOnlyUtils.h"
 #include "nsReadableUtils.h"
 #include "nsWindowsHelpers.h"
 #include "nsXULAppAPI.h"
 
--- a/tools/fuzzing/common/FuzzingMutate.h
+++ b/tools/fuzzing/common/FuzzingMutate.h
@@ -2,17 +2,16 @@
 /* vim: set ts=8 sts=2 et sw=2 tw=80: */
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef mozilla_fuzzing_FuzzingMutate_h
 #define mozilla_fuzzing_FuzzingMutate_h
 
-#include "mozilla/TypeTraits.h"
 #include <random>
 
 namespace mozilla {
 namespace fuzzing {
 
 class FuzzingMutate {
  public:
   static void ChangeBit(uint8_t* aData, size_t aLength);
--- a/tools/fuzzing/common/FuzzingTraits.h
+++ b/tools/fuzzing/common/FuzzingTraits.h
@@ -3,17 +3,16 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef mozilla_fuzzing_FuzzingTraits_h
 #define mozilla_fuzzing_FuzzingTraits_h
 
 #include "mozilla/Assertions.h"
-#include "mozilla/TypeTraits.h"
 #include <cmath>
 #include <random>
 #include <type_traits>
 
 namespace mozilla {
 namespace fuzzing {
 
 class FuzzingTraits {
--- a/tools/fuzzing/faulty/Faulty.cpp
+++ b/tools/fuzzing/faulty/Faulty.cpp
@@ -19,17 +19,16 @@
 #endif
 #include "base/string_util.h"
 #include "FuzzingMutate.h"
 #include "FuzzingTraits.h"
 #include "chrome/common/ipc_channel.h"
 #include "chrome/common/ipc_message.h"
 #include "chrome/common/file_descriptor_set_posix.h"
 #include "mozilla/ipc/Faulty.h"
-#include "mozilla/TypeTraits.h"
 #include "nsComponentManagerUtils.h"
 #include "nsNetCID.h"
 #include "nsIFile.h"
 #include "nsIFileStreams.h"
 #include "nsILineInputStream.h"
 #include "nsIRunnable.h"
 #include "nsThreadUtils.h"
 #include "nsLocalFile.h"
--- a/tools/profiler/core/platform.cpp
+++ b/tools/profiler/core/platform.cpp
@@ -52,17 +52,16 @@
 #include "mozilla/extensions/WebExtensionPolicy.h"
 #include "mozilla/Printf.h"
 #include "mozilla/Services.h"
 #include "mozilla/StackWalk.h"
 #include "mozilla/StaticPtr.h"
 #include "mozilla/SystemGroup.h"
 #include "mozilla/ThreadLocal.h"
 #include "mozilla/TimeStamp.h"
-#include "mozilla/TypeTraits.h"
 #include "mozilla/Tuple.h"
 #include "mozilla/UniquePtr.h"
 #include "mozilla/Vector.h"
 #include "BaseProfiler.h"
 #include "nsDirectoryServiceDefs.h"
 #include "nsDirectoryServiceUtils.h"
 #include "nsIDocShell.h"
 #include "nsIHttpProtocolHandler.h"
--- a/widget/SystemTimeConverter.h
+++ b/widget/SystemTimeConverter.h
@@ -4,17 +4,16 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef SystemTimeConverter_h
 #define SystemTimeConverter_h
 
 #include <limits>
 #include <type_traits>
 #include "mozilla/TimeStamp.h"
-#include "mozilla/TypeTraits.h"
 
 namespace mozilla {
 
 // Utility class that converts time values represented as an unsigned integral
 // number of milliseconds from one time source (e.g. a native event time) to
 // corresponding mozilla::TimeStamp objects.
 //
 // This class handles wrapping of integer values and skew between the time
--- a/widget/android/nsAppShell.h
+++ b/widget/android/nsAppShell.h
@@ -11,17 +11,16 @@
 #include <type_traits>
 #include <utility>
 
 #include "mozilla/BackgroundHangMonitor.h"
 #include "mozilla/LinkedList.h"
 #include "mozilla/Monitor.h"
 #include "mozilla/StaticPtr.h"
 #include "mozilla/TimeStamp.h"  // for mozilla::TimeDuration
-#include "mozilla/TypeTraits.h"
 #include "mozilla/UniquePtr.h"
 #include "mozilla/Unused.h"
 #include "mozilla/jni/Natives.h"
 #include "nsBaseAppShell.h"
 #include "nsCOMPtr.h"
 #include "nsIAndroidBridge.h"
 #include "nsInterfaceHashtable.h"
 #include "nsTArray.h"
--- a/widget/android/nsWindow.cpp
+++ b/widget/android/nsWindow.cpp
@@ -14,17 +14,16 @@
 
 #include "mozilla/MiscEvents.h"
 #include "mozilla/MouseEvents.h"
 #include "mozilla/Preferences.h"
 #include "mozilla/RWLock.h"
 #include "mozilla/StaticPrefs_android.h"
 #include "mozilla/StaticPrefs_ui.h"
 #include "mozilla/TouchEvents.h"
-#include "mozilla/TypeTraits.h"
 #include "mozilla/Unused.h"
 #include "mozilla/WeakPtr.h"
 #include "mozilla/WheelHandlingHelper.h"  // for WheelDeltaAdjustmentStrategy
 
 #include "mozilla/Preferences.h"
 #include "mozilla/Unused.h"
 #include "mozilla/a11y/SessionAccessibility.h"
 #include "mozilla/dom/ContentChild.h"
--- a/widget/windows/ShellHeaderOnlyUtils.h
+++ b/widget/windows/ShellHeaderOnlyUtils.h
@@ -21,17 +21,16 @@
 // interfaces defined by shldisp.h
 #include <shellapi.h>
 #include <type_traits>
 
 #include <comdef.h>
 #include <comutil.h>
 
 #include "mozilla/RefPtr.h"
-#include "mozilla/TypeTraits.h"
 #include "mozilla/UniquePtr.h"
 
 namespace mozilla {
 
 /**
  * Ask the current user's Desktop to ShellExecute on our behalf, thus causing
  * the resulting launched process to inherit its security priviliges from
  * Explorer instead of our process.
--- a/xpcom/base/HoldDropJSObjects.h
+++ b/xpcom/base/HoldDropJSObjects.h
@@ -2,17 +2,16 @@
 /* vim: set ts=8 sts=2 et sw=2 tw=80: */
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef mozilla_HoldDropJSObjects_h
 #define mozilla_HoldDropJSObjects_h
 
-#include "mozilla/TypeTraits.h"
 #include "nsCycleCollectionParticipant.h"
 
 class nsISupports;
 class nsScriptObjectTracer;
 
 // Only HoldJSObjects and DropJSObjects should be called directly.
 
 namespace mozilla {
--- a/xpcom/base/nsCOMPtr.h
+++ b/xpcom/base/nsCOMPtr.h
@@ -22,17 +22,16 @@
 
 #include <type_traits>
 #include <utility>
 
 #include "mozilla/AlreadyAddRefed.h"
 #include "mozilla/Assertions.h"
 #include "mozilla/Attributes.h"
 #include "mozilla/RefPtr.h"
-#include "mozilla/TypeTraits.h"
 #include "nsCycleCollectionNoteChild.h"
 #include "nsDebug.h"  // for |NS_ASSERTION|
 #include "nsISupportsUtils.h"  // for |nsresult|, |NS_ADDREF|, |NS_GET_TEMPLATE_IID| et al
 
 /*
  * WARNING: This file defines several macros for internal use only. These
  * macros begin with the prefix |NSCAP_|. Do not use these macros in your own
  * code. They are for internal use only for cross-platform compatibility, and
--- a/xpcom/base/nsCycleCollectionNoteChild.h
+++ b/xpcom/base/nsCycleCollectionNoteChild.h
@@ -8,17 +8,16 @@
 // classes in order to specialize CC helpers such as ImplCycleCollectionTraverse
 // for them.
 
 #ifndef nsCycleCollectionNoteChild_h__
 #define nsCycleCollectionNoteChild_h__
 
 #include "nsCycleCollectionTraversalCallback.h"
 #include "mozilla/Likely.h"
-#include "mozilla/TypeTraits.h"
 
 enum { CycleCollectionEdgeNameArrayFlag = 1 };
 
 // Just a helper for appending "[i]". Didn't want to pull in string headers
 // here.
 void CycleCollectionNoteEdgeNameImpl(
     nsCycleCollectionTraversalCallback& aCallback, const char* aName,
     uint32_t aFlags = 0);
--- a/xpcom/base/nsISupportsUtils.h
+++ b/xpcom/base/nsISupportsUtils.h
@@ -10,17 +10,16 @@
 #include <type_traits>
 
 #include "nscore.h"
 #include "nsISupportsBase.h"
 #include "nsError.h"
 #include "nsDebug.h"
 #include "nsISupportsImpl.h"
 #include "mozilla/RefPtr.h"
-#include "mozilla/TypeTraits.h"
 
 /**
  * Macro for adding a reference to an interface.
  * @param _ptr The interface pointer.
  */
 #define NS_ADDREF(_ptr) (_ptr)->AddRef()
 
 /**
--- a/xpcom/ds/ArrayIterator.h
+++ b/xpcom/ds/ArrayIterator.h
@@ -7,18 +7,16 @@
 // Common iterator implementation for array classes e.g. nsTArray.
 
 #ifndef mozilla_ArrayIterator_h
 #define mozilla_ArrayIterator_h
 
 #include <iterator>
 #include <type_traits>
 
-#include "mozilla/TypeTraits.h"
-
 namespace mozilla {
 
 namespace detail {
 template <typename T>
 struct AddInnerConst;
 
 template <typename T>
 struct AddInnerConst<T&> {
--- a/xpcom/ds/Tokenizer.h
+++ b/xpcom/ds/Tokenizer.h
@@ -7,17 +7,16 @@
 #ifndef Tokenizer_h__
 #define Tokenizer_h__
 
 #include <type_traits>
 
 #include "nsString.h"
 #include "mozilla/CheckedInt.h"
 #include "mozilla/ScopeExit.h"
-#include "mozilla/TypeTraits.h"
 #include "mozilla/UniquePtr.h"
 #include "nsTArray.h"
 
 namespace mozilla {
 
 template <typename TChar>
 class TokenizerBase {
  public:
--- a/xpcom/ds/nsTHashtable.h
+++ b/xpcom/ds/nsTHashtable.h
@@ -15,17 +15,16 @@
 #include <utility>
 
 #include "PLDHashTable.h"
 #include "mozilla/Assertions.h"
 #include "mozilla/Attributes.h"
 #include "mozilla/MemoryReporting.h"
 #include "mozilla/OperatorNewExtensions.h"
 #include "mozilla/PodOperations.h"
-#include "mozilla/TypeTraits.h"
 #include "mozilla/fallible.h"
 #include "nsPointerHashKeys.h"
 
 /**
  * a base class for templated hashtables.
  *
  * Clients will rarely need to use this class directly. Check the derived
  * classes first, to see if they will meet your needs.
--- a/xpcom/reflect/xptinfo/xptcodegen.py
+++ b/xpcom/reflect/xptinfo/xptcodegen.py
@@ -455,17 +455,16 @@ def link_to_cpp(interfaces, fd):
     # Include any bindings files which we need to include for webidl types
     for include in sorted(includes):
         fd.write('#include "%s"\n' % include)
 
     # Write out our header
     fd.write("""
 #include "xptinfo.h"
 #include "mozilla/PerfectHash.h"
-#include "mozilla/TypeTraits.h"
 #include "mozilla/dom/BindingUtils.h"
 
 // These template methods are specialized to be used in the sDOMObjects table.
 template<mozilla::dom::prototypes::ID PrototypeID, typename T>
 static nsresult UnwrapDOMObject(JS::HandleValue aHandle, void** aObj, JSContext* aCx)
 {
   RefPtr<T> p;
   nsresult rv = mozilla::dom::UnwrapObject<PrototypeID, T>(aHandle, p, aCx);
--- a/xpcom/string/nsTextFormatter.h
+++ b/xpcom/string/nsTextFormatter.h
@@ -30,17 +30,16 @@
  **	%f - float
  **	%g - float
  */
 #include <stdio.h>
 #include <stdarg.h>
 #include "nscore.h"
 #include "nsString.h"
 #include "mozilla/Span.h"
-#include "mozilla/TypeTraits.h"
 
 #ifdef XPCOM_GLUE
 #  error \
       "nsTextFormatter is not available in the standalone glue due to NSPR dependencies."
 #endif
 
 class nsTextFormatter {
  public:
--- a/xpcom/string/nsUTF8Utils.h
+++ b/xpcom/string/nsUTF8Utils.h
@@ -10,17 +10,16 @@
 // file will provide signatures for the Mozilla abstract string types. It will
 // use XPCOM assertion/debugging macros, etc.
 
 #include <type_traits>
 
 #include "nscore.h"
 #include "mozilla/Assertions.h"
 #include "mozilla/EndianUtils.h"
-#include "mozilla/TypeTraits.h"
 
 #include "nsCharTraits.h"
 
 #ifdef MOZILLA_INTERNAL_API
 #  define UTF8UTILS_WARNING(msg) NS_WARNING(msg)
 #else
 #  define UTF8UTILS_WARNING(msg)
 #endif
--- a/xpcom/tests/gtest/TestNsDeque.cpp
+++ b/xpcom/tests/gtest/TestNsDeque.cpp
@@ -2,17 +2,16 @@
 /* vim: set ts=8 sts=2 et sw=2 tw=80: */
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "gtest/gtest.h"
 #include "nsDeque.h"
 #include "nsCRT.h"
-#include "mozilla/TypeTraits.h"
 #include <stdio.h>
 #include <functional>
 #include <type_traits>
 #include <utility>
 
 /**************************************************************
   Now define the token deallocator class...
  **************************************************************/
--- a/xpcom/threads/MozPromise.h
+++ b/xpcom/threads/MozPromise.h
@@ -11,17 +11,16 @@
 #  include <utility>
 
 #  include "mozilla/Logging.h"
 #  include "mozilla/Maybe.h"
 #  include "mozilla/Monitor.h"
 #  include "mozilla/Mutex.h"
 #  include "mozilla/RefPtr.h"
 #  include "mozilla/Tuple.h"
-#  include "mozilla/TypeTraits.h"
 #  include "mozilla/UniquePtr.h"
 #  include "mozilla/Variant.h"
 
 #  include "nsISerialEventTarget.h"
 #  include "nsTArray.h"
 #  include "nsThreadUtils.h"
 
 #  ifdef MOZ_WIDGET_ANDROID
--- a/xpcom/threads/PrioritizedEventQueue.h
+++ b/xpcom/threads/PrioritizedEventQueue.h
@@ -6,17 +6,16 @@
 
 #ifndef mozilla_PrioritizedEventQueue_h
 #define mozilla_PrioritizedEventQueue_h
 
 #include "mozilla/AbstractEventQueue.h"
 #include "mozilla/EventQueue.h"
 #include "mozilla/IdlePeriodState.h"
 #include "mozilla/TimeStamp.h"
-#include "mozilla/TypeTraits.h"
 #include "mozilla/UniquePtr.h"
 #include "nsCOMPtr.h"
 
 class nsIIdlePeriod;
 class nsIRunnable;
 
 namespace mozilla {
 namespace ipc {
--- a/xpcom/threads/nsProxyRelease.h
+++ b/xpcom/threads/nsProxyRelease.h
@@ -7,17 +7,16 @@
 #ifndef nsProxyRelease_h__
 #define nsProxyRelease_h__
 
 #include <utility>
 
 #include "MainThreadUtils.h"
 #include "mozilla/Likely.h"
 #include "mozilla/SystemGroup.h"
-#include "mozilla/TypeTraits.h"
 #include "mozilla/Unused.h"
 #include "nsCOMPtr.h"
 #include "nsIEventTarget.h"
 #include "nsIThread.h"
 #include "nsPrintfCString.h"
 #include "nsThreadUtils.h"
 
 #ifdef XPCOM_GLUE_AVOID_NSPR
--- a/xpcom/threads/nsThreadUtils.h
+++ b/xpcom/threads/nsThreadUtils.h
@@ -12,17 +12,16 @@
 
 #include "MainThreadUtils.h"
 #include "mozilla/AbstractEventQueue.h"
 #include "mozilla/Atomics.h"
 #include "mozilla/Likely.h"
 #include "mozilla/Maybe.h"
 #include "mozilla/TimeStamp.h"
 #include "mozilla/Tuple.h"
-#include "mozilla/TypeTraits.h"
 #include "nsCOMPtr.h"
 #include "nsICancelableRunnable.h"
 #include "nsIIdlePeriod.h"
 #include "nsIIdleRunnable.h"
 #include "nsINamed.h"
 #include "nsIRunnable.h"
 #include "nsIThread.h"
 #include "nsIThreadManager.h"