EnumMaskIterator: ASSERT when the mask is too big.

This will catch errors when someone updates an enum used with
EnumMaskIterator without updating EnumBitmaskSize. Previously it would
just ignore the extra bits, which produced super confusing bugs.

Bug: dawn:635
Change-Id: Ib0bf3f252db317a1bfdeb687b2426801a79b524d
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/38260
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Stephen White <senorblanco@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Auto-Submit: Corentin Wallez <cwallez@chromium.org>
diff --git a/src/dawn_native/EnumMaskIterator.h b/src/dawn_native/EnumMaskIterator.h
index 85fde10..75d639d 100644
--- a/src/dawn_native/EnumMaskIterator.h
+++ b/src/dawn_native/EnumMaskIterator.h
@@ -29,6 +29,8 @@
 
       public:
         EnumMaskIterator(const T& mask) : mBitSetIterator(std::bitset<N>(static_cast<U>(mask))) {
+            // If you hit this ASSERT it means that you forgot to update EnumBitmaskSize<T>::value;
+            ASSERT(U(mask) == 0 || Log2(uint64_t(U(mask))) < N);
         }
 
         class Iterator final {