diff --git a/crates/backend/src/util.rs b/crates/backend/src/util.rs index 4486e940..bab8cb5d 100644 --- a/crates/backend/src/util.rs +++ b/crates/backend/src/util.rs @@ -30,6 +30,8 @@ pub fn rust_ident(name: &str) -> Ident { panic!("tried to create empty Ident (from \"\")"); } else if is_rust_keyword(name) { Ident::new(&format!("{}_", name), proc_macro2::Span::call_site()) + } else if name.chars().next().unwrap().is_ascii_digit() { + Ident::new(&format!("N{}", name), proc_macro2::Span::call_site()) } else { raw_ident(name) } diff --git a/crates/web-sys/webidls/unavailable_enum_ident/Gamepad.webidl b/crates/web-sys/webidls/enabled/Gamepad.webidl similarity index 100% rename from crates/web-sys/webidls/unavailable_enum_ident/Gamepad.webidl rename to crates/web-sys/webidls/enabled/Gamepad.webidl diff --git a/crates/web-sys/webidls/unavailable_enum_ident/Request.webidl b/crates/web-sys/webidls/enabled/Request.webidl similarity index 100% rename from crates/web-sys/webidls/unavailable_enum_ident/Request.webidl rename to crates/web-sys/webidls/enabled/Request.webidl diff --git a/crates/web-sys/webidls/unavailable_enum_ident/VTTCue.webidl b/crates/web-sys/webidls/enabled/VTTCue.webidl similarity index 100% rename from crates/web-sys/webidls/unavailable_enum_ident/VTTCue.webidl rename to crates/web-sys/webidls/enabled/VTTCue.webidl diff --git a/crates/web-sys/webidls/unavailable_enum_ident/VTTRegion.webidl b/crates/web-sys/webidls/enabled/VTTRegion.webidl similarity index 100% rename from crates/web-sys/webidls/unavailable_enum_ident/VTTRegion.webidl rename to crates/web-sys/webidls/enabled/VTTRegion.webidl diff --git a/crates/web-sys/webidls/unavailable_enum_ident/WaveShaperNode.webidl b/crates/web-sys/webidls/enabled/WaveShaperNode.webidl similarity index 100% rename from crates/web-sys/webidls/unavailable_enum_ident/WaveShaperNode.webidl rename to crates/web-sys/webidls/enabled/WaveShaperNode.webidl diff --git a/crates/web-sys/webidls/unavailable_enum_ident/XMLHttpRequest.webidl b/crates/web-sys/webidls/enabled/XMLHttpRequest.webidl similarity index 100% rename from crates/web-sys/webidls/unavailable_enum_ident/XMLHttpRequest.webidl rename to crates/web-sys/webidls/enabled/XMLHttpRequest.webidl diff --git a/crates/web-sys/webidls/unavailable_enum_ident/README.md b/crates/web-sys/webidls/unavailable_enum_ident/README.md deleted file mode 100644 index e66e82f5..00000000 --- a/crates/web-sys/webidls/unavailable_enum_ident/README.md +++ /dev/null @@ -1 +0,0 @@ -These WebIDL files have enum variants that are not valid rust Idents, for example "2x", or "". diff --git a/crates/webidl/src/lib.rs b/crates/webidl/src/lib.rs index 399c233c..5a91c9fc 100644 --- a/crates/webidl/src/lib.rs +++ b/crates/webidl/src/lib.rs @@ -720,7 +720,13 @@ impl<'a> WebidlParse<()> for webidl::ast::Enum { variants: self .variants .iter() - .map(|v| rust_ident(camel_case_ident(&v).as_str())) + .map(|v| + if !v.is_empty() { + rust_ident(camel_case_ident(&v).as_str()) + } else { + rust_ident("None") + } + ) .collect(), variant_values: self.variants.clone(), rust_attrs: vec![parse_quote!(#[derive(Copy, Clone, PartialEq, Debug)])],