Make it possible to build the style_traits crate with a stable compiler.

Testing this on CI to make sure we don’t regress it is blocked on #11806
This commit is contained in:
Simon Sapin 2016-06-21 13:55:50 +02:00
parent b9b289c4be
commit ea73c8efac
20 changed files with 145 additions and 89 deletions

View file

@ -8,13 +8,16 @@ publish = false
name = "style_traits"
path = "lib.rs"
[features]
heap_size = ["heapsize", "heapsize_plugin", "cssparser/heap_size", "euclid/plugins"]
serde-serialization = ["serde", "serde_macros", "cssparser/serde-serialization", "euclid/plugins"]
[dependencies]
util = {path = "../util"}
plugins = {path = "../plugins"}
cssparser = {version = "0.5.4", features = ["heap_size", "serde-serialization"]}
euclid = {version = "0.6.4", features = ["plugins"]}
heapsize = "0.3.0"
heapsize_plugin = "0.1.2"
cssparser = "0.5.4"
euclid = "0.6.4"
heapsize = {version = "0.3.0", optional = true}
heapsize_plugin = {version = "0.1.2", optional = true}
rustc-serialize = "0.3"
serde = "0.7"
serde_macros = "0.7"
serde = {version = "0.7", optional = true}
serde_macros = {version = "0.7", optional = true}

View file

@ -8,7 +8,9 @@ use cssparser::ToCss;
macro_rules! define_cursor {
($( $css: expr => $variant: ident = $value: expr, )+) => {
#[derive(Clone, Copy, Debug, Deserialize, Eq, HeapSizeOf, PartialEq, Serialize)]
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
#[cfg_attr(feature = "serde-serialization", derive(Deserialize, Serialize))]
#[cfg_attr(feature = "heap_size", derive(HeapSizeOf))]
#[repr(u8)]
pub enum Cursor {
$( $variant = $value ),+

View file

@ -8,19 +8,22 @@
#![crate_name = "style_traits"]
#![crate_type = "rlib"]
#![feature(custom_derive)]
#![feature(plugin)]
#![plugin(heapsize_plugin)]
#![plugin(serde_macros)]
#![plugin(plugins)]
#![deny(unsafe_code)]
#![cfg_attr(feature = "serde-serialization", feature(custom_derive))]
#![cfg_attr(feature = "serde-serialization", feature(plugin))]
#![cfg_attr(feature = "serde-serialization", plugin(serde_macros))]
#![cfg_attr(feature = "heap_size", feature(custom_derive))]
#![cfg_attr(feature = "heap_size", feature(plugin))]
#![cfg_attr(feature = "heap_size", plugin(heapsize_plugin))]
#[macro_use]
extern crate cssparser;
extern crate euclid;
extern crate heapsize;
#[cfg(feature = "heap_size")] extern crate heapsize;
extern crate rustc_serialize;
extern crate serde;
#[cfg(feature = "serde-serialization")] extern crate serde;
extern crate util;
pub mod cursor;

View file

@ -5,12 +5,58 @@
#[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_serde!($name [ $( $css => $variant ),+ ]);
};
($name: ident: $( $css: expr => $variant: ident ),+) => {
__define_css_keyword_enum__add_serde!($name [ $( $css => $variant ),+ ]);
};
}
#[cfg(feature = "serde-serialization")]
#[macro_export]
macro_rules! __define_css_keyword_enum__add_serde {
($name: ident [ $( $css: expr => $variant: ident ),+ ]) => {
__define_css_keyword_enum__add_heapsize! {
$name [ Deserialize, Serialize ] [ $( $css => $variant ),+ ]
}
};
}
#[cfg(not(feature = "serde-serialization"))]
#[macro_export]
macro_rules! __define_css_keyword_enum__add_serde {
($name: ident [ $( $css: expr => $variant: ident ),+ ]) => {
__define_css_keyword_enum__add_heapsize! {
$name [] [ $( $css => $variant ),+ ]
}
};
}
#[cfg(feature = "heap_size")]
#[macro_export]
macro_rules! __define_css_keyword_enum__add_heapsize {
($name: ident [ $( $derived_trait: ident),* ] [ $( $css: expr => $variant: ident ),+ ]) => {
__define_css_keyword_enum__actual! {
$name [ $( $derived_trait, )* HeapSizeOf ] [ $( $css => $variant ),+ ]
}
};
}
#[cfg(not(feature = "heap_size"))]
#[macro_export]
macro_rules! __define_css_keyword_enum__add_heapsize {
($name: ident [ $( $derived_trait: ident),* ] [ $( $css: expr => $variant: ident ),+ ]) => {
__define_css_keyword_enum__actual! {
$name [ $( $derived_trait ),* ] [ $( $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 ),+
}

View file

@ -20,7 +20,9 @@ define_css_keyword_enum!(Orientation:
"landscape" => Landscape);
#[derive(Clone, Debug, PartialEq, Deserialize, Serialize, HeapSizeOf)]
#[derive(Clone, Debug, PartialEq)]
#[cfg_attr(feature = "serde-serialization", derive(Deserialize, Serialize))]
#[cfg_attr(feature = "heap_size", derive(HeapSizeOf))]
pub struct ViewportConstraints {
pub size: TypedSize2D<ViewportPx, f32>,
@ -54,7 +56,8 @@ impl ToCss for ViewportConstraints {
/// Zoom is a number | percentage | auto
/// See http://dev.w3.org/csswg/css-device-adapt/#descdef-viewport-zoom
#[derive(Copy, Clone, Debug, HeapSizeOf, PartialEq)]
#[derive(Copy, Clone, Debug, PartialEq)]
#[cfg_attr(feature = "heap_size", derive(HeapSizeOf))]
pub enum Zoom {
Number(f32),
Percentage(f32),