Fix previous commit.
diff --git a/gen/src/write.rs b/gen/src/write.rs
index 2ea6ca8..70620ce 100644
--- a/gen/src/write.rs
+++ b/gen/src/write.rs
@@ -5,7 +5,7 @@
 use crate::syntax::symbol::Symbol;
 use crate::syntax::{mangle, Api, Enum, ExternFn, ExternType, Signature, Struct, Type, Types, Var};
 use proc_macro2::Ident;
-use std::collections::{HashMap, HashSet};
+use std::collections::HashMap;
 
 pub(super) fn gen(
     namespace: &Namespace,
@@ -46,7 +46,6 @@
         }
     }
 
-    let mut cxx_types = HashSet::new();
     let mut methods_for_type = HashMap::new();
     for api in apis {
         if let Api::RustFunction(efn) = api {
@@ -57,9 +56,6 @@
                     .push(efn);
             }
         }
-        if let Api::CxxType(enm) = api {
-            cxx_types.insert(&enm.ident);
-        }
     }
 
     for api in apis {
@@ -70,7 +66,7 @@
             }
             Api::Enum(enm) => {
                 out.next_section();
-                if cxx_types.contains(&enm.ident) {
+                if types.cxx.contains(&enm.ident) {
                     check_enum(out, enm);
                 } else {
                     write_enum(out, enm);
@@ -382,31 +378,24 @@
 }
 
 fn check_enum(out: &mut OutFile, enm: &Enum) {
-    let discriminants = enm
-        .variants
-        .iter()
-        .scan(None, |prev_discriminant, variant| {
-            let discriminant = variant
-                .discriminant
-                .unwrap_or_else(|| prev_discriminant.map_or(0, |n| n + 1));
-            *prev_discriminant = Some(discriminant);
-            Some(discriminant)
-        });
     writeln!(
         out,
         "static_assert(sizeof({}) == sizeof(uint32_t));",
         enm.ident
     );
-    enm.variants
-        .iter()
-        .zip(discriminants)
-        .for_each(|(variant, discriminant)| {
-            writeln!(
-                out,
-                "static_assert({}::{} == {});",
-                enm.ident, variant.ident, discriminant
-            );
-        });
+    let mut prev_discriminant = None;
+    for variant in &enm.variants {
+        let discriminant = variant
+            .discriminant
+            .unwrap_or_else(|| prev_discriminant.map_or(0, |n| n + 1));
+        writeln!(
+            out,
+            "static_assert(static_cast<uint32_t>({}::{}) == {},
+              \"disagrees with the value in #[cxx::bridge]\");",
+            enm.ident, variant.ident, discriminant,
+        );
+        prev_discriminant = Some(discriminant);
+    }
 }
 
 fn write_exception_glue(out: &mut OutFile, apis: &[Api]) {