From f21b1fbf21f680124fd79e11c8be75e74a9ba562 Mon Sep 17 00:00:00 2001 From: eV Date: Fri, 16 Aug 2019 21:51:08 +0000 Subject: [PATCH] Fix emscripten and guard against cargo test + wasm32-unknown-unknown --- Cargo.toml | 5 +++-- src/lib.rs | 7 +++++-- src/offset/local.rs | 4 ++-- src/offset/utc.rs | 6 +++--- tests/wasm.rs | 2 +- 5 files changed, 14 insertions(+), 10 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 66fb839..0ba1f9d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -35,7 +35,8 @@ num-traits = { version = "0.2", default-features = false } rustc-serialize = { version = "0.3.20", optional = true } serde = { version = "1", optional = true } -[target.'cfg(target_arch = "wasm32")'.dependencies] + +[target.'cfg(all(target_arch = "wasm32", not(target_os = "emscripten"), not(cargo_web)))'.dependencies] wasm-bindgen = { version = "0.2" } js-sys = "0.3" # contains FFI bindings for the JS Date API @@ -46,7 +47,7 @@ bincode = { version = "0.8.0" } num-iter = { version = "0.1.35", default-features = false } doc-comment = "0.3" -[target.'cfg(target_arch = "wasm32")'.dev-dependencies] +[target.'cfg(all(target_arch = "wasm32", not(target_os = "emscripten"), not(cargo_web)))'.dev-dependencies] wasm-bindgen-test = "0.2" [package.metadata.docs.rs] diff --git a/src/lib.rs b/src/lib.rs index 5a11eb5..f4f0ae9 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -414,11 +414,14 @@ extern crate serde as serdelib; #[cfg(test)] #[macro_use] extern crate doc_comment; -#[cfg(target_arch = "wasm32")] +#[cfg(all(target_arch = "wasm32", not(target_os = "emscripten"), not(cargo_web)))] extern crate wasm_bindgen; -#[cfg(target_arch = "wasm32")] +#[cfg(all(target_arch = "wasm32", not(target_os = "emscripten"), not(cargo_web)))] extern crate js_sys; +#[cfg(all(target_arch = "wasm32", not(target_os = "emscripten"), cargo_web))] +compile_error!("Chrono currently does not work for wasm32-unknown-unknown + cargo web"); + #[cfg(test)] doctest!("../README.md"); diff --git a/src/offset/local.rs b/src/offset/local.rs index ae43d4e..68c27c4 100644 --- a/src/offset/local.rs +++ b/src/offset/local.rs @@ -87,13 +87,13 @@ impl Local { } /// Returns a `DateTime` which corresponds to the current date. - #[cfg(not(target_arch = "wasm32"))] + #[cfg(not(all(target_arch = "wasm32", not(target_os = "emscripten"))))] pub fn now() -> DateTime { tm_to_datetime(oldtime::now()) } /// Returns a `DateTime` which corresponds to the current date. - #[cfg(target_arch = "wasm32")] + #[cfg(all(target_arch = "wasm32", not(target_os = "emscripten")))] pub fn now() -> DateTime { use super::Utc; let now: DateTime = super::Utc::now(); diff --git a/src/offset/utc.rs b/src/offset/utc.rs index 83b92ac..36f4e5f 100644 --- a/src/offset/utc.rs +++ b/src/offset/utc.rs @@ -4,7 +4,7 @@ //! The UTC (Coordinated Universal Time) time zone. use std::fmt; -#[cfg(all(feature="clock", not(target_arch = "wasm32")))] +#[cfg(all(feature="clock", not(all(target_arch = "wasm32", not(target_os = "emscripten")))))] use oldtime; use naive::{NaiveDate, NaiveDateTime}; @@ -38,7 +38,7 @@ impl Utc { pub fn today() -> Date { Utc::now().date() } /// Returns a `DateTime` which corresponds to the current date. - #[cfg(not(target_arch = "wasm32"))] + #[cfg(not(all(target_arch = "wasm32", not(target_os = "emscripten"))))] pub fn now() -> DateTime { let spec = oldtime::get_time(); let naive = NaiveDateTime::from_timestamp(spec.sec, spec.nsec as u32); @@ -46,7 +46,7 @@ impl Utc { } /// Returns a `DateTime` which corresponds to the current date. - #[cfg(target_arch = "wasm32")] + #[cfg(all(target_arch = "wasm32", not(target_os = "emscripten")))] pub fn now() -> DateTime { let now = js_sys::Date::new_0(); let millisecs_since_unix_epoch: u64 = now.get_time() as u64; diff --git a/tests/wasm.rs b/tests/wasm.rs index 757f02e..b95d9f0 100644 --- a/tests/wasm.rs +++ b/tests/wasm.rs @@ -1,4 +1,4 @@ -#[cfg(target_arch = "wasm32")] +#[cfg(all(target_arch = "wasm32", not(target_os = "emscripten")))] mod test { extern crate chrono; extern crate wasm_bindgen_test;