Merge remote-tracking branch 'remotes/origin/v0.6.x'

# Conflicts:
#	serde_codegen/Cargo.toml
This commit is contained in:
Erick Tryzelaar 2015-11-28 21:16:51 -08:00
commit b858cd9e18
13 changed files with 112 additions and 18 deletions
examples/serde-syntex-example
serde_codegen
serde_macros
serde_tests

@ -0,0 +1,2 @@
target
Cargo.lock

@ -0,0 +1,18 @@
[package]
name = "serde-syntex-example"
version = "0.1.0"
authors = ["Erick Tryzelaar <erick.tryzelaar@gmail.com>"]
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 }

@ -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
```

@ -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();
}

@ -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"));

@ -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);
}

@ -1,6 +1,6 @@
[package]
name = "serde_codegen"
version = "0.6.2"
version = "0.6.5"
authors = ["Erick Tryzelaar <erick.tryzelaar@gmail.com>"]
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 = { version = "^0.3.6", 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.6.0", default-features = false }
quasi = { version = "^0.3.5", default-features = false }
quasi_macros = { version = "^0.3.5", optional = true }
syntex = { version = "^0.17.0", optional = true }
syntex_syntax = { version = "^0.19.1", 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 }

@ -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,

@ -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(

@ -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,

@ -1,6 +1,6 @@
[package]
name = "serde_macros"
version = "0.6.1"
version = "0.6.5"
authors = ["Erick Tryzelaar <erick.tryzelaar@gmail.com>"]
license = "MIT/Apache-2.0"
description = "Macros to auto-generate implementations for the serde framework"

@ -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);
}

@ -11,15 +11,15 @@ keywords = ["serialization"]
build = "build.rs"
[build-dependencies]
syntex = { version = "^0.17.0" }
syntex_syntax = { version = "^0.19.1" }
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"