Use -Werror on GCC/clang CMake builds for Dawn.

This will cause an error when a wgpu::FeatureName is added
without updating dawn.node at the same time.

Bug: None
Change-Id: I27b97853e425979622a907cc06e58697a8eb7540
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/183921
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9e29093..429ed22 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -382,6 +382,7 @@
       -fno-exceptions
       -fno-rtti
 
+      -Werror
       -Wno-deprecated-builtins
       -Wno-unknown-warning-option
       -Wno-switch-default
diff --git a/src/dawn/node/binding/Converter.cpp b/src/dawn/node/binding/Converter.cpp
index 1c05f83..e81591a 100644
--- a/src/dawn/node/binding/Converter.cpp
+++ b/src/dawn/node/binding/Converter.cpp
@@ -1519,6 +1519,7 @@
         case wgpu::FeatureName::PixelLocalStorageCoherent:
         case wgpu::FeatureName::PixelLocalStorageNonCoherent:
         case wgpu::FeatureName::R8UnormStorage:
+        case wgpu::FeatureName::ShaderModuleCompilationOptions:
         case wgpu::FeatureName::SharedBufferMemoryD3D12Resource:
         case wgpu::FeatureName::SharedFenceDXGISharedHandle:
         case wgpu::FeatureName::SharedFenceMTLSharedEvent:
@@ -1538,6 +1539,7 @@
         case wgpu::FeatureName::SurfaceCapabilities:
         case wgpu::FeatureName::TransientAttachments:
         case wgpu::FeatureName::Undefined:
+        case wgpu::FeatureName::YCbCrVulkanSamplers:
             return false;
     }
     return false;
diff --git a/src/dawn/node/binding/GPUDevice.cpp b/src/dawn/node/binding/GPUDevice.cpp
index b7198fc..4735f42 100644
--- a/src/dawn/node/binding/GPUDevice.cpp
+++ b/src/dawn/node/binding/GPUDevice.cpp
@@ -176,9 +176,13 @@
             auto r = interop::GPUDeviceLostReason::kDestroyed;
             switch (reason) {
                 case WGPUDeviceLostReason_Force32:
+                // This case never happens with wgpu::Device::SetDeviceCallback, and is specific to
+                // wgpu::DeviceDescriptor::deviceLostCallback.
+                case WGPUDeviceLostReason_FailedCreation:
                     UNREACHABLE("WGPUDeviceLostReason_Force32");
                     break;
                 case WGPUDeviceLostReason_Destroyed:
+                case WGPUDeviceLostReason_InstanceDropped:
                 case WGPUDeviceLostReason_Undefined:
                     r = interop::GPUDeviceLostReason::kDestroyed;
                     break;