cranelift_assembler_x64_meta/generate/features.rs
1//! Generate feature-related Rust code.
2
3use super::{fmtln, Formatter};
4use crate::{dsl, generate::generate_derive};
5
6impl dsl::Feature {
7 /// `pub enum Feature { ... }`
8 ///
9 /// This function recreates the `Feature` struct itself in the generated
10 /// code.
11 pub fn generate_enum(f: &mut Formatter) {
12 fmtln!(f, "#[doc(hidden)]");
13 generate_derive(f);
14 fmtln!(f, "#[derive(Copy, PartialEq)]"); // Add a couple more helpful derives.
15 f.add_block("pub enum Feature", |f| {
16 for feature in dsl::ALL_FEATURES {
17 fmtln!(f, "{feature},");
18 }
19 });
20 }
21}