Enable -Wsign-conversion warnings

Enables the -Wsign-conversion warnings for all of Dawn. Also fixes
a few last dangling issues that snuck past the previous patches.

Bug: 42240462
Change-Id: I3f2e931e82ec0ce815a476d28a690ed1a6864477
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/324797
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Brandon Jones <bajones@chromium.org>
Auto-Submit: Brandon Jones <bajones@chromium.org>
diff --git a/src/dawn/native/d3d11/BufferD3D11.cpp b/src/dawn/native/d3d11/BufferD3D11.cpp
index 937ec57..7e5d10d 100644
--- a/src/dawn/native/d3d11/BufferD3D11.cpp
+++ b/src/dawn/native/d3d11/BufferD3D11.cpp
@@ -47,6 +47,7 @@
 #include "src/utils/assert.h"
 #include "src/utils/compiler.h"
 #include "src/utils/heap_array.h"
+#include "src/utils/numeric.h"
 
 namespace dawn::native::d3d11 {
 
@@ -1508,7 +1509,7 @@
             alignedBuffer = DAWN_UNSAFE_BUFFERS(HeapArray<uint8_t>::Uninit(alignedSize));
             std::ranges::copy(
                 DAWN_UNSAFE_TODO(Span<const uint8_t>{static_cast<const uint8_t*>(data), size}),
-                alignedBuffer.begin() + leftExtraBytes);
+                alignedBuffer.begin() + sign_cast(leftExtraBytes));
             data = alignedBuffer.data();
         }
 
diff --git a/src/dawn/native/null/DeviceNull.cpp b/src/dawn/native/null/DeviceNull.cpp
index 8e17c43..2dfddc0 100644
--- a/src/dawn/native/null/DeviceNull.cpp
+++ b/src/dawn/native/null/DeviceNull.cpp
@@ -40,6 +40,7 @@
 #include "src/dawn/native/Surface.h"
 #include "src/dawn/native/TintUtils.h"
 #include "src/utils/compiler.h"
+#include "src/utils/numeric.h"
 #include "tint/tint.h"
 
 namespace dawn::native::null {
@@ -389,7 +390,7 @@
                              uint64_t size) {
     // TODO(https://crbug.com/524406299): Use Span::CopyFrom.
     std::ranges::copy(staging->GetCurrentMapping().GetMappedSubspan(sourceOffset, size),
-                      mBackingData.begin() + destinationOffset);
+                      mBackingData.begin() + sign_cast(destinationOffset));
 }
 
 void Buffer::DoWriteBuffer(uint64_t bufferOffset, Span<const std::byte> data) {
diff --git a/src/dawn/node/binding/GPUDevice.cpp b/src/dawn/node/binding/GPUDevice.cpp
index ec95357..5d96cb3 100644
--- a/src/dawn/node/binding/GPUDevice.cpp
+++ b/src/dawn/node/binding/GPUDevice.cpp
@@ -54,6 +54,7 @@
 #include "src/dawn/node/binding/GPUTexture.h"
 #include "src/dawn/node/utils/Debug.h"
 #include "src/utils/compiler.h"
+#include "src/utils/numeric.h"
 
 namespace wgpu::binding {
 
@@ -104,7 +105,7 @@
             n = DAWN_UNSAFE_TODO(printf("%.*s", static_cast<int>(msg.length), msg.data));
         }
         DAWN_UNSAFE_TODO(msg.data += n);
-        msg.length -= n;
+        msg.length -= dawn::sign_cast(n);
     }
 }
 
diff --git a/src/dawn/wire/ChunkedCommandHandler.cpp b/src/dawn/wire/ChunkedCommandHandler.cpp
index dfaf5aa..693cbab 100644
--- a/src/dawn/wire/ChunkedCommandHandler.cpp
+++ b/src/dawn/wire/ChunkedCommandHandler.cpp
@@ -34,6 +34,7 @@
 
 #include "src/utils/compiler.h"
 #include "src/utils/heap_array.h"
+#include "src/utils/numeric.h"
 
 namespace dawn::wire {
 
@@ -74,7 +75,7 @@
     }
     // TODO(https://crbug.com/524406299): Use Span::CopyFrom.
     std::ranges::copy(DAWN_UNSAFE_TODO(Span<const char>{cmd.chunkData, cmd.chunkSize}),
-                      chunkedCommand->data.begin() + chunkedCommand->putOffset);
+                      chunkedCommand->data.begin() + sign_cast(chunkedCommand->putOffset));
     chunkedCommand->putOffset += cmd.chunkSize;
 
     if (chunkedCommand->GetRemainingSize() == 0) {
diff --git a/src/dawn/wire/client/ClientInlineMemoryTransferService.cpp b/src/dawn/wire/client/ClientInlineMemoryTransferService.cpp
index bb10f08..fa1a214 100644
--- a/src/dawn/wire/client/ClientInlineMemoryTransferService.cpp
+++ b/src/dawn/wire/client/ClientInlineMemoryTransferService.cpp
@@ -35,6 +35,7 @@
 #include "src/utils/assert.h"
 #include "src/utils/compiler.h"
 #include "src/utils/heap_array.h"
+#include "src/utils/numeric.h"
 
 namespace dawn::wire::client {
 
@@ -80,7 +81,7 @@
                 return false;
             }
 
-            std::ranges::copy(deserializeData, GetData().begin() + offset);
+            std::ranges::copy(deserializeData, GetData().begin() + sign_cast(offset));
             return true;
         }
 
diff --git a/src/utils/BUILD.gn b/src/utils/BUILD.gn
index 1b6860e..1de20c7 100644
--- a/src/utils/BUILD.gn
+++ b/src/utils/BUILD.gn
@@ -231,7 +231,6 @@
       # Arithmetic
       "-Wno-implicit-float-conversion",
       "-Wno-implicit-int-conversion",
-      "-Wno-sign-conversion",
     ]
 
     # P1. Likely to help with hardening.