From a577574cfe1f8f4b9e9b583bbde9ad3da522ee85 Mon Sep 17 00:00:00 2001 From: Erick Tryzelaar Date: Mon, 9 Nov 2015 13:50:53 -0800 Subject: [PATCH 1/7] feat(cargo): Bump syntex, aster, and quasi versions --- serde_codegen/Cargo.toml | 12 ++++++------ serde_tests/Cargo.toml | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/serde_codegen/Cargo.toml b/serde_codegen/Cargo.toml index 6e8f1564..80e85018 100644 --- a/serde_codegen/Cargo.toml +++ b/serde_codegen/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "serde_codegen" -version = "0.6.2" +version = "0.6.3" authors = ["Erick Tryzelaar "] license = "MIT/Apache-2.0" description = "Macros to auto-generate implementations for the serde framework" @@ -15,12 +15,12 @@ nightly = ["quasi_macros"] with-syntex = ["quasi/with-syntex", "quasi_codegen", "quasi_codegen/with-syntex", "syntex", "syntex_syntax"] [build-dependencies] -quasi_codegen = { verision = "^0.3.6", optional = true } +quasi_codegen = { verision = "^0.3.7", optional = true } syntex = { version = "^0.17.0", optional = true } [dependencies] -aster = { version = "^0.6.0", default-features = false } -quasi = { verision = "^0.3.5", default-features = false } -quasi_macros = { version = "^0.3.5", optional = true } +aster = { version = "^0.7.0", default-features = false } +quasi = { verision = "^0.3.7", default-features = false } +quasi_macros = { version = "^0.3.7", optional = true } syntex = { version = "^0.17.0", optional = true } -syntex_syntax = { version = "^0.19.1", optional = true } +syntex_syntax = { version = "^0.20.0", optional = true } diff --git a/serde_tests/Cargo.toml b/serde_tests/Cargo.toml index 8eb41025..54c3bd13 100644 --- a/serde_tests/Cargo.toml +++ b/serde_tests/Cargo.toml @@ -12,7 +12,7 @@ build = "build.rs" [build-dependencies] syntex = { version = "^0.17.0" } -syntex_syntax = { version = "^0.19.1" } +syntex_syntax = { version = "^0.20.0" } serde_codegen = { version = "*", path = "../serde_codegen", features = ["with-syntex"] } [dev-dependencies] From af6fbba9b84728c8330cdb325e118448ff6cdad0 Mon Sep 17 00:00:00 2001 From: Erick Tryzelaar Date: Sun, 22 Nov 2015 21:56:44 -0800 Subject: [PATCH 2/7] feat(cargo): Bump syntex, aster, and quasi versions --- serde_codegen/Cargo.toml | 16 ++++++++-------- serde_tests/Cargo.toml | 6 +++--- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/serde_codegen/Cargo.toml b/serde_codegen/Cargo.toml index 80e85018..08b9f7c6 100644 --- a/serde_codegen/Cargo.toml +++ b/serde_codegen/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "serde_codegen" -version = "0.6.3" +version = "0.6.4" authors = ["Erick Tryzelaar "] license = "MIT/Apache-2.0" description = "Macros to auto-generate implementations for the serde framework" @@ -15,12 +15,12 @@ nightly = ["quasi_macros"] with-syntex = ["quasi/with-syntex", "quasi_codegen", "quasi_codegen/with-syntex", "syntex", "syntex_syntax"] [build-dependencies] -quasi_codegen = { verision = "^0.3.7", optional = true } -syntex = { version = "^0.17.0", optional = true } +quasi_codegen = { verision = "^0.3.8", optional = true } +syntex = { version = "^0.22.0", optional = true } [dependencies] -aster = { version = "^0.7.0", default-features = false } -quasi = { verision = "^0.3.7", default-features = false } -quasi_macros = { version = "^0.3.7", optional = true } -syntex = { version = "^0.17.0", optional = true } -syntex_syntax = { version = "^0.20.0", optional = true } +aster = { version = "^0.8.0", default-features = false } +quasi = { verision = "^0.3.8", default-features = false } +quasi_macros = { version = "^0.3.8", optional = true } +syntex = { version = "^0.22.0", optional = true } +syntex_syntax = { version = "^0.22.0", optional = true } diff --git a/serde_tests/Cargo.toml b/serde_tests/Cargo.toml index 54c3bd13..86977330 100644 --- a/serde_tests/Cargo.toml +++ b/serde_tests/Cargo.toml @@ -11,15 +11,15 @@ keywords = ["serialization"] build = "build.rs" [build-dependencies] -syntex = { version = "^0.17.0" } -syntex_syntax = { version = "^0.20.0" } +syntex = { version = "^0.22.0" } +syntex_syntax = { version = "^0.22.0" } serde_codegen = { version = "*", path = "../serde_codegen", features = ["with-syntex"] } [dev-dependencies] num = "^0.1.27" rustc-serialize = "^0.3.16" serde = { version = "*", path = "../serde" } -syntex = "^0.17.0" +syntex = "^0.22.0" [[test]] name = "test" From c687ee60ffb6abe43e812c19aa8503648fab3fdb Mon Sep 17 00:00:00 2001 From: Erick Tryzelaar Date: Sat, 28 Nov 2015 20:09:03 -0800 Subject: [PATCH 3/7] feat(example): Add an example --- examples/serde-syntex-example/.gitignore | 2 ++ examples/serde-syntex-example/Cargo.toml | 18 ++++++++++++ examples/serde-syntex-example/README.md | 20 ++++++++++++++ examples/serde-syntex-example/build.rs | 29 ++++++++++++++++++++ examples/serde-syntex-example/src/main.rs | 11 ++++++++ examples/serde-syntex-example/src/main.rs.in | 16 +++++++++++ 6 files changed, 96 insertions(+) create mode 100644 examples/serde-syntex-example/.gitignore create mode 100644 examples/serde-syntex-example/Cargo.toml create mode 100644 examples/serde-syntex-example/README.md create mode 100644 examples/serde-syntex-example/build.rs create mode 100644 examples/serde-syntex-example/src/main.rs create mode 100644 examples/serde-syntex-example/src/main.rs.in diff --git a/examples/serde-syntex-example/.gitignore b/examples/serde-syntex-example/.gitignore new file mode 100644 index 00000000..a9d37c56 --- /dev/null +++ b/examples/serde-syntex-example/.gitignore @@ -0,0 +1,2 @@ +target +Cargo.lock diff --git a/examples/serde-syntex-example/Cargo.toml b/examples/serde-syntex-example/Cargo.toml new file mode 100644 index 00000000..81fdbad3 --- /dev/null +++ b/examples/serde-syntex-example/Cargo.toml @@ -0,0 +1,18 @@ +[package] +name = "serde-syntex-example" +version = "0.1.0" +authors = ["Erick Tryzelaar "] +build = "build.rs" + +[features] +default = ["serde_codegen"] +nightly = ["serde_macros"] + +[build-dependencies] +serde_codegen = { version = "^0.6.4", optional = true } +syntex = "^0.22.0" + +[dependencies] +serde = "^0.6.1" +serde_json = "^0.6.0" +serde_macros = { version = "^0.6.1", optional = true } diff --git a/examples/serde-syntex-example/README.md b/examples/serde-syntex-example/README.md new file mode 100644 index 00000000..ea919313 --- /dev/null +++ b/examples/serde-syntex-example/README.md @@ -0,0 +1,20 @@ +This example demonstrates how to use Serde with Syntex. On stable or nightly +with Syntex, it can be built with: + +``` +% multirust run stable cargo run + Running `target/debug/serde-syntex-example` +{"x":1,"y":2} +Point { x: 1, y: 2 } + +% multirust run nightly cargo run + Running `target/debug/serde-syntex-example` +{"x":1,"y":2} +Point { x: 1, y: 2 } +``` + +On nightly, it can use a plugin with: + +``` +% multirust run nightly cargo run --features nightly --no-default-features +``` diff --git a/examples/serde-syntex-example/build.rs b/examples/serde-syntex-example/build.rs new file mode 100644 index 00000000..b1aadd78 --- /dev/null +++ b/examples/serde-syntex-example/build.rs @@ -0,0 +1,29 @@ +#[cfg(not(feature = "serde_macros"))] +mod inner { + extern crate syntex; + extern crate serde_codegen; + + use std::env; + use std::path::Path; + + pub fn main() { + let out_dir = env::var_os("OUT_DIR").unwrap(); + + let src = Path::new("src/main.rs.in"); + let dst = Path::new(&out_dir).join("main.rs"); + + let mut registry = syntex::Registry::new(); + + serde_codegen::register(&mut registry); + registry.expand("", &src, &dst).unwrap(); + } +} + +#[cfg(feature = "serde_macros")] +mod inner { + pub fn main() {} +} + +fn main() { + inner::main(); +} diff --git a/examples/serde-syntex-example/src/main.rs b/examples/serde-syntex-example/src/main.rs new file mode 100644 index 00000000..9c2333fb --- /dev/null +++ b/examples/serde-syntex-example/src/main.rs @@ -0,0 +1,11 @@ +#![cfg_attr(nightly, feature(custom_derive, plugin))] +#![cfg_attr(nightly, plugin(serde_macros))] + +extern crate serde; +extern crate serde_json; + +#[cfg(feature = "serde_macros")] +include!("main.rs.in"); + +#[cfg(not(feature = "serde_macros"))] +include!(concat!(env!("OUT_DIR"), "/main.rs")); diff --git a/examples/serde-syntex-example/src/main.rs.in b/examples/serde-syntex-example/src/main.rs.in new file mode 100644 index 00000000..4cf4841c --- /dev/null +++ b/examples/serde-syntex-example/src/main.rs.in @@ -0,0 +1,16 @@ +#[derive(Serialize, Deserialize, Debug)] +struct Point { + x: i32, + y: i32, +} + +fn main() { + let point = Point { x: 1, y: 2 }; + let serialized = serde_json::to_string(&point).unwrap(); + + println!("{}", serialized); + + let deserialized: Point = serde_json::from_str(&serialized).unwrap(); + + println!("{:?}", deserialized); +} From 59e0d5e0817eec1df4719e1c19baab20d1935841 Mon Sep 17 00:00:00 2001 From: Erick Tryzelaar Date: Sat, 28 Nov 2015 20:09:31 -0800 Subject: [PATCH 4/7] fix(warning): #[automatically_derived] was removed --- serde_codegen/src/de.rs | 1 - serde_codegen/src/ser.rs | 1 - 2 files changed, 2 deletions(-) diff --git a/serde_codegen/src/de.rs b/serde_codegen/src/de.rs index 5d5412f8..1ac5e415 100644 --- a/serde_codegen/src/de.rs +++ b/serde_codegen/src/de.rs @@ -65,7 +65,6 @@ pub fn expand_derive_deserialize( let where_clause = &impl_generics.where_clause; let impl_item = quote_item!(cx, - #[automatically_derived] impl $impl_generics ::serde::de::Deserialize for $ty $where_clause { fn deserialize<__D>(deserializer: &mut __D) -> ::std::result::Result<$ty, __D::Error> where __D: ::serde::de::Deserializer, diff --git a/serde_codegen/src/ser.rs b/serde_codegen/src/ser.rs index 044a1297..1a9d4a59 100644 --- a/serde_codegen/src/ser.rs +++ b/serde_codegen/src/ser.rs @@ -60,7 +60,6 @@ pub fn expand_derive_serialize( let where_clause = &impl_generics.where_clause; let impl_item = quote_item!(cx, - #[automatically_derived] impl $impl_generics ::serde::ser::Serialize for $ty $where_clause { fn serialize<__S>(&self, serializer: &mut __S) -> ::std::result::Result<(), __S::Error> where __S: ::serde::ser::Serializer, From 966b104d48f2a5fea4d411360726be934a801374 Mon Sep 17 00:00:00 2001 From: Erick Tryzelaar Date: Sat, 28 Nov 2015 20:09:54 -0800 Subject: [PATCH 5/7] fix(rustup): nightly rust moved Registry into rustc_plugin --- serde_codegen/src/lib.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/serde_codegen/src/lib.rs b/serde_codegen/src/lib.rs index 0deaecb5..af94ac5d 100644 --- a/serde_codegen/src/lib.rs +++ b/serde_codegen/src/lib.rs @@ -14,7 +14,7 @@ extern crate syntex_syntax as syntax; extern crate syntax; #[cfg(not(feature = "with-syntex"))] -extern crate rustc; +extern crate rustc_plugin; #[cfg(feature = "with-syntex")] include!(concat!(env!("OUT_DIR"), "/lib.rs")); @@ -60,7 +60,7 @@ pub fn register(reg: &mut syntex::Registry) { } #[cfg(not(feature = "with-syntex"))] -pub fn register(reg: &mut rustc::plugin::Registry) { +pub fn register(reg: &mut rustc_plugin::Registry) { reg.register_syntax_extension( syntax::parse::token::intern("derive_Serialize"), syntax::ext::base::MultiDecorator( From 09822c99ccae015553e8d5ca816cfbb8536c597b Mon Sep 17 00:00:00 2001 From: Erick Tryzelaar Date: Sat, 28 Nov 2015 20:17:21 -0800 Subject: [PATCH 6/7] fix(rustup): Update serde_codegen to reflect Registry move --- serde_macros/src/lib.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/serde_macros/src/lib.rs b/serde_macros/src/lib.rs index a01d1341..17e39bb4 100644 --- a/serde_macros/src/lib.rs +++ b/serde_macros/src/lib.rs @@ -1,10 +1,10 @@ #![feature(plugin_registrar, rustc_private)] extern crate serde_codegen; -extern crate rustc; +extern crate rustc_plugin; #[plugin_registrar] #[doc(hidden)] -pub fn plugin_registrar(reg: &mut rustc::plugin::Registry) { +pub fn plugin_registrar(reg: &mut rustc_plugin::Registry) { serde_codegen::register(reg); } From f3f098e7f5f8972b2427910691c1a6be91c5eca8 Mon Sep 17 00:00:00 2001 From: Erick Tryzelaar Date: Sat, 28 Nov 2015 20:30:36 -0800 Subject: [PATCH 7/7] feat(cargo): Version bump --- serde_codegen/Cargo.toml | 2 +- serde_macros/Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/serde_codegen/Cargo.toml b/serde_codegen/Cargo.toml index 08b9f7c6..b799eb00 100644 --- a/serde_codegen/Cargo.toml +++ b/serde_codegen/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "serde_codegen" -version = "0.6.4" +version = "0.6.5" authors = ["Erick Tryzelaar "] license = "MIT/Apache-2.0" description = "Macros to auto-generate implementations for the serde framework" diff --git a/serde_macros/Cargo.toml b/serde_macros/Cargo.toml index 6bbfdd4c..e89f4017 100644 --- a/serde_macros/Cargo.toml +++ b/serde_macros/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "serde_macros" -version = "0.6.1" +version = "0.6.5" authors = ["Erick Tryzelaar "] license = "MIT/Apache-2.0" description = "Macros to auto-generate implementations for the serde framework"