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}