aboutsummaryrefslogtreecommitdiffstats
path: root/components/style_traits/values.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/style_traits/values.rs')
-rw-r--r--components/style_traits/values.rs32
1 files changed, 29 insertions, 3 deletions
diff --git a/components/style_traits/values.rs b/components/style_traits/values.rs
index 5b9226f324e..995e98fcfef 100644
--- a/components/style_traits/values.rs
+++ b/components/style_traits/values.rs
@@ -5,12 +5,38 @@
#[macro_export]
macro_rules! define_css_keyword_enum {
($name: ident: $( $css: expr => $variant: ident ),+,) => {
- define_css_keyword_enum!($name: $( $css => $variant ),+);
+ __define_css_keyword_enum__add_optional_traits!($name [ $( $css => $variant ),+ ]);
};
($name: ident: $( $css: expr => $variant: ident ),+) => {
+ __define_css_keyword_enum__add_optional_traits!($name [ $( $css => $variant ),+ ]);
+ };
+}
+
+#[cfg(feature = "servo")]
+#[macro_export]
+macro_rules! __define_css_keyword_enum__add_optional_traits {
+ ($name: ident [ $( $css: expr => $variant: ident ),+ ]) => {
+ __define_css_keyword_enum__actual! {
+ $name [ Deserialize, Serialize, HeapSizeOf ] [ $( $css => $variant ),+ ]
+ }
+ };
+}
+
+#[cfg(not(feature = "servo"))]
+#[macro_export]
+macro_rules! __define_css_keyword_enum__add_optional_traits {
+ ($name: ident [ $( $css: expr => $variant: ident ),+ ]) => {
+ __define_css_keyword_enum__actual! {
+ $name [] [ $( $css => $variant ),+ ]
+ }
+ };
+}
+
+#[macro_export]
+macro_rules! __define_css_keyword_enum__actual {
+ ($name: ident [ $( $derived_trait: ident),* ] [ $( $css: expr => $variant: ident ),+ ]) => {
#[allow(non_camel_case_types)]
- #[derive(Clone, Eq, PartialEq, Copy, Hash, RustcEncodable, Debug, HeapSizeOf)]
- #[derive(Deserialize, Serialize)]
+ #[derive(Clone, Eq, PartialEq, Copy, Hash, RustcEncodable, Debug $(, $derived_trait )* )]
pub enum $name {
$( $variant ),+
}