Olaf Buddenhagen
0ff91e4451
Adapt for removal of old interfaces in libsyntax
...
9108fb7bae
dropped the `map()` method (among other things) -- so we need to adapt
our code.
This change should be backwards-compatible.
2016-05-02 07:08:43 +02:00
David Tolnay
305fab7c16
fix(codegen): Support extern crate serde
not in toplevel module
2016-04-25 09:58:01 -07:00
Erick Tryzelaar
a959073a81
Merge pull request #296 from erickt/master
...
Fix a warning, bump the versions
2016-04-25 07:58:23 -07:00
Erick Tryzelaar
7bd87feb62
Fix a warning, bump the versions
2016-04-19 12:43:57 -05:00
David Tolnay
fd3c15fb68
fix(codegen): Discard type defaults from impl generics
2016-04-19 10:28:43 -07:00
David Tolnay
886670134a
feat(codegen): Infer Default and Deserialize bounds correctly
2016-04-13 21:56:12 -07:00
David Tolnay
ff02b0c741
fix(codegen): Take into account default=... when skip_deserializing
2016-04-12 23:42:24 -07:00
Erick Tryzelaar
dbba537b66
Merge branch 'skip_deserializing' of https://github.com/dtolnay/serde into dtolnay-skip_deserializing
2016-04-12 08:52:25 -07:00
Erick Tryzelaar
bc2324fba7
Merge branch 'feature/inhibit' of https://github.com/dtolnay/serde into dtolnay-feature/inhibit
2016-04-12 08:41:02 -07:00
Erick Tryzelaar
1c5d83889c
Merge remote-tracking branch 'remotes/origin/master' into renamed_missing_field
2016-04-12 08:24:34 -07:00
David Tolnay
87393b61bb
feat(codegen) skip_deserializing
2016-04-10 20:29:37 -07:00
Erick Tryzelaar
a84b6aaedd
Bump syntex/aster/quasi version
2016-04-10 19:54:54 -07:00
Joe Wilm
4af850431c
Fix deserialize_with
in module with Result alias
...
Result<T, E> aliases usually provide one or both of `T` and `E`. This
would cause an error when using deserialize_with:
error: wrong number of type arguments: expected 1, found 2
which unhelpfully just pointed to `#[derive(Deserialize)]`
2016-04-05 15:53:51 -07:00
Anthony Ramine
c7c5b50f35
Silence unused_variables warning with empty enums
...
Deriving Serialize or Deserialize on Void-like enums triggered an
unused_variables warning.
2016-04-03 14:31:04 +02:00
Oliver Schneider
d9b6feef19
pass the renamed deserialize
field name to missing_field
2016-03-30 17:29:27 +02:00
Erick Tryzelaar
9785646246
feat(cargo): Update syntex
2016-03-16 23:52:21 -07:00
David Tolnay
eaff73a541
Where clause for generic types only
2016-02-29 21:53:58 -08:00
David Tolnay
19ec8bbdb9
feat(codegen): Inhibit generic bounds if skip_serializing
...
The generated code for a struct like:
struct Test<A, B, C> {
a: X<A>
#[serde(skip_serializing)]
b: B
#[serde(serialize_with="...")]
c: C
}
Used to be:
impl<A, B, C> Serialize for Test<A, B, C>
where A: Serialize,
B: Serialize,
C: Serialize,
{ ... }
Now it is:
impl<A, B, C> Serialize for Test<A, B, C>
where X<A>: Serialize,
{ ... }
Both `skip_serializing` and `serialize_with` mean the type does not need to
implement `Serialize`.
2016-02-28 19:11:51 -08:00
Erick Tryzelaar
57433e1eaa
feat(codegen): Optimize deserializing fields from byte strings
2016-02-23 20:38:06 -08:00
Erick Tryzelaar
118476b98b
feat(de): Rename de::Error trait methods
2016-02-23 20:21:07 -08:00
Erick Tryzelaar
740865b637
feat(de): Add an Error::unknown_variant error.
...
Closes #169
2016-02-21 16:26:52 -08:00
Erick Tryzelaar
78cf29d1d1
feat(codegen): Switch attributes to using using paths not expressions
2016-02-21 15:28:25 -08:00
Erick Tryzelaar
0c35ce0a4f
feat(codegen): Improve error messages in annotations
2016-02-21 09:54:03 -08:00
Erick Tryzelaar
c268eb2258
feat(codegen): Remove #[serde(skip_serializing_if_{none,empty})]
...
`#[serde(skip_serializing_if="...")]` can replace this functionality.
2016-02-18 19:31:43 -08:00
Erick Tryzelaar
40f8e6b061
feat(codegen): Add #[serde(deserialize_with="...")]
...
This allows a field to be deserialized with an expression instead
of the default deserializer. This simplifies deserializing a struct
or enum that contains an external type that doesn't implement
`serde::Deserialize`. This expression is passed a variable
`deserializer` that needs to be used to deserialize the expression.
2016-02-18 19:13:55 -08:00
Erick Tryzelaar
001cb7ab01
feat(codegen): Add #[serde(serialize_with="...")]
...
This allows a field to be serialized with an expression instead
of the default serializer. This simplifies serializing a struct
or enum that contains an external type that doesn't implement
`serde::Serialize`. This expression is passed a variable
`serializer` that needs to be used to serialize the expression.
2016-02-18 19:13:55 -08:00
Erick Tryzelaar
de89f95f31
feat(codegen): Add support for #![serde(skip_serialize_if="$expr")]
...
This allows end users to use an arbitrary expression to decide whether
or not to serialize some field. This expression has access to all the
fields in the struct, but none of the internal state of the Serialize
implementation. For structs, serde implements this by creating a
temporary trait and implementing the struct for it. For struct variants,
the fields are copied by reference into a temporary struct first
before implementing the temporary trait.
This also fixes a bug where the serde_codegen wasn't making calls to
Serializer::serialize_{tuple,struct}_variant{,_elt}.
2016-02-18 19:13:55 -08:00
Erick Tryzelaar
9812a4c9c6
feat(codegen): Allow #[serde(default="123")]
...
This feature adds support for the default to be specified to be
some expression (which unfortunately needs to be parsed from
a string) without needing this value to have an implementation
of `Default`, or for a new-type wrapper in order to provide an
alternative implementation. This expression is run in a function,
and therefore has no access to any of the internal state of
the deserializer.
2016-02-18 19:13:55 -08:00
Erick Tryzelaar
17bf789708
Merge branch 'v0.6.x'
2016-02-18 09:46:46 -08:00
Erick Tryzelaar
f6a66a5537
feat(cargo): Rustup to latest nightly
2016-02-18 09:27:41 -08:00
Erick Tryzelaar
1236889664
Merge branch 'v0.6.x'
...
# Conflicts:
# serde_codegen/src/de.rs
2016-02-14 16:45:59 -08:00
debris
74b230c183
Update serde_codegen for rustc 1.8.0-nightly (ce4b75f25 2016-02-12)
2016-02-14 03:27:20 +01:00
Erick Tryzelaar
561a373d19
Merge branch 'v0.6.x'
...
# Conflicts:
# serde/src/de/mod.rs
# serde_codegen/src/attr.rs
# serde_codegen/src/de.rs
# serde_codegen/src/lib.rs
2016-02-12 21:43:23 -08:00
Erick Tryzelaar
064241f03c
fix(serde): Rename visit_struct_key to visit_struct_field
...
This is more consistent with the rest of the serde naming patterns.
2016-02-12 21:22:42 -08:00
Erick Tryzelaar
32163cd53b
feat(cargo): Version bump
2016-02-12 21:06:47 -08:00
Erick Tryzelaar
3a5aa00262
fix(codegen): Fix clippy cfg_attr
2016-02-12 20:21:52 -08:00
Joe Wilm
9985d2ebfc
plugin(clippy) now relies on feature = "clippy"
...
Was previously nightly. This resulted in compilation error when the
clippy feature was not enabled because the clippy crate could not be
found.
2016-02-10 11:42:33 -08:00
Erick Tryzelaar
0224e212f9
feat(codegen): Allow containers to be renamed
...
Closes #218
2016-02-08 11:11:36 -08:00
Erick Tryzelaar
b842164fd8
feat(codegen): Support renames that are different when serializing and deserializing
...
According to #61 , if one uses serde to serialize requests that pass
url-encoded parameters to a server, it might get responses back
with a different capitalization scheme. This patch restores the
behavior implemented in #62 .
# Conflicts:
# serde_codegen/src/attr.rs
# serde_codegen/src/de.rs
# serde_tests/tests/test_annotations.rs
2016-02-08 10:43:41 -08:00
Erick Tryzelaar
365e5129af
refactor(codegen): Add VariantAttrs
2016-02-08 10:43:32 -08:00
Erick Tryzelaar
d0ee5b0b4b
feat(codegen): Remove {Ser,Deser}ializer::format
...
This feature has never been used, and it's complicating the
implementation of #207 . We could restore this functionality if there is
ever interest in it.
Closes #211 .
2016-02-08 10:10:00 -08:00
Erick Tryzelaar
5d4f9ce72b
refactor(codegen): Add FieldsAttr::from_{field,variant}
2016-02-08 10:09:30 -08:00
Erick Tryzelaar
807224d231
refactor(codegen): Add ContainerAttrs::from_items
2016-02-08 10:09:18 -08:00
Erick Tryzelaar
0bd380ee23
chore(cleanup): Minor reorganization of attr.rs
2016-02-08 08:30:29 -08:00
Erick Tryzelaar
a926cb62f0
chore(codegen): Clean up error handling
2016-02-07 20:36:24 -08:00
Erick Tryzelaar
f8b3990571
feat(de): Rename deserialize_struct_key to deserialize_struct_field
...
This makes it more consistent with the naming style used throughout
the rest of serde.
2016-02-05 17:27:18 -08:00
Erick Tryzelaar
9ae47a261e
Merge branch 'v0.6.x'
...
# Conflicts:
# serde/src/de/impls.rs
# serde_codegen/src/de.rs
2016-01-28 09:49:15 -08:00
Joe Wilm
6d25fc9dbb
feat(de): Support struct key hinting
...
Formats that do not provide type hints in the serialized format
(bincode, redis) rely on hinting in the deserializer. Struct key hinting
was not previously supported. This was not an issue in the past because
bincode serializes structs as a keyless sequence of values. However,
redis data is stored (key, value, key, value, ...), and the keys must be
deserialized to properly create a struct.
The default implementation of `visit_struct_key` is simply `visit` since
that was the previous method called in codegen.
2016-01-28 08:38:07 -08:00
Erick Tryzelaar
42b8b6153e
Merge branch 'v0.6.x' into master
...
# Conflicts:
# serde/Cargo.toml
# serde/src/ser/impls.rs
# serde_codegen/src/attr.rs
# serde_codegen/src/de.rs
# serde_codegen/src/field.rs
# serde_codegen/src/ser.rs
2016-01-18 12:45:39 -08:00
Erick Tryzelaar
8df841f048
fix(errors): Report errors on unknown #[serde(...)] attributes
...
Closes #51 , #175 , and #187
2016-01-18 12:39:46 -08:00
Erick Tryzelaar
bfa2b69193
feat(clippy): Use clippy for it's extra lints
2016-01-18 12:24:03 -08:00
Erick Tryzelaar
939e1540d4
Merge pull request #205 from JohnHeitmann/default-typo
...
Remove extraneous flag
2016-01-18 09:11:14 -08:00
Erick Tryzelaar
1ced6db73e
Merge remote-tracking branch 'remotes/origin/v0.6.x'
2016-01-16 15:08:06 -08:00
Erick Tryzelaar
979a4bcd88
feat(errors): Don't panic if annotating a non-struct/enum
...
This also improves the error spans when there's an internal
error.
Closes #206 .
2016-01-16 14:51:11 -08:00
John Heitmann
bba21f99fe
Remove extraneous flag
2016-01-11 17:51:07 -08:00
John Heitmann
8c57f433ff
s/disallow_unknown/deny_unknown_fields/
2016-01-11 10:20:07 -08:00
John Heitmann
bfac1a581c
Implemented disallow_unknown
...
* Added codegen for disallow_unknown
* ... with new default to ignore unknown values during deserialization
* Added ContainerAttrs
2016-01-10 19:34:48 -08:00
Erick Tryzelaar
59285f627b
Merge branch 'v0.6.x'
...
# Conflicts:
# serde_codegen/Cargo.toml
2016-01-10 11:54:46 -08:00
Erick Tryzelaar
072ff149f5
fix(rustup): Update to latest rust; silence some warnings
2015-12-24 12:12:03 -05:00
Erick Tryzelaar
b858cd9e18
Merge remote-tracking branch 'remotes/origin/v0.6.x'
...
# Conflicts:
# serde_codegen/Cargo.toml
2015-11-28 21:16:51 -08:00
Erick Tryzelaar
966b104d48
fix(rustup): nightly rust moved Registry into rustc_plugin
2015-11-28 20:09:54 -08:00
Erick Tryzelaar
59e0d5e081
fix(warning): #[automatically_derived] was removed
2015-11-28 20:09:31 -08:00
Erick Tryzelaar
f474c57881
Merge branch 'v0.6.x'
2015-11-02 20:39:32 -08:00
Erick Tryzelaar
7521db7b0b
fix(crates): Bump aster and syntex_syntax
2015-11-01 13:24:26 -08:00
Oliver Schneider
56c42a907f
fix( #151 ): renaming Deserializer::visit_* to Deserializer::deserialize_*
2015-10-20 09:30:15 +02:00
Erick Tryzelaar
f872b3fb4b
fix(cargo): Update aster, quasi, and syntex
2015-10-17 19:44:07 -07:00
Erick Tryzelaar
ddc33ee747
cleanup(whitespace): Fix some whitespace issues
2015-10-14 08:52:25 -07:00
Oliver Schneider
1c88856fc8
$value_expr starting with a & took address of resulting bool
2015-10-12 11:04:50 +02:00
Erick Tryzelaar
c4392ff256
feat(codegen): Add more attributes to skip serializing
...
These attributes are `#[serde(skip_serializing_if_none)]` and
`#[serde(skip_serializing_if_empty)]`.
2015-09-07 16:58:52 -07:00
Erick Tryzelaar
c68ab508c0
refactor(codegen): Simplify parsing attributes
2015-09-07 16:58:52 -07:00
Erick Tryzelaar
42069ca669
Refactor tests to not use serde_json
2015-08-29 17:29:42 -07:00
Sebastian Thiel
784cfcd49e
Use fully qualified Result
type
...
If that is not the case, the generated code might attempt to use a
custom `Result` type with incompatible type parameters.
2015-08-08 12:33:29 +02:00
Erick Tryzelaar
7fb2bd50bf
Add a string argument to Error::syntax()
2015-08-07 08:08:56 -07:00
Erick Tryzelaar
2aeb51ad51
Remove "_error" from de::Error::*_error
2015-08-07 07:53:22 -07:00
Erick Tryzelaar
97528b59cf
Add support for serializing newtype structs
...
This enables formats like JSON to serialize newtype wrapper
structs without the normal object wrapper. Consider types like:
```rust
struct Point {
x: u32,
y: u32,
}
stuct MyPoint(Point);
```
Before this patch, `MyPoint(1,2)` would get serialized as
`[{"x":1,"y":2}]`, but now it gets serialized as `{"x":1,"y"2}`.
2015-07-31 07:22:13 -07:00
Erick Tryzelaar
6715fb6652
Rename visit_simple to visit_newtype
2015-07-31 07:22:13 -07:00
Erick Tryzelaar
fefc010deb
Rename visit_enum_simple to visit_newtype_variant
2015-07-31 07:22:13 -07:00
Erick Tryzelaar
6cbb72decf
Inlne the visit_seq method
2015-07-31 07:22:13 -07:00
Erick Tryzelaar
0348a3914d
Pass variant index to visit_enum_simple
2015-07-30 08:06:04 -07:00
Erick Tryzelaar
49fa208242
Minor cleanup
2015-07-30 08:06:04 -07:00
Erick Tryzelaar
d2fef27721
Rename ser::Serializer::visit_enum_{unit,seq,map} to visit_{unit,tuple,struct}_variant
2015-07-30 06:45:21 -07:00
Erick Tryzelaar
351b7039a8
Rename de::VariantVisitor::visit_{map,seq} to visit_{struct,tuple}
2015-07-30 06:45:21 -07:00
Erick Tryzelaar
6c9cebdcc3
Pass the variant fields and tuple lengths into visit_{enum,tuple,tuple_struct}
2015-07-30 06:45:21 -07:00
Erick Tryzelaar
0058e3a8d4
Merge pull request #111 from oli-obk/master
...
tuple enums with single element should not be a json-array
2015-07-29 13:35:43 -07:00
Oliver Schneider
24787195a1
serialize tuple enums with single element directly as the value instead of a sequence
2015-07-24 09:10:58 +02:00
Oliver Schneider
5885111863
deserialize tuple enums with single element directly as the value instead of a sequence
2015-07-24 09:10:58 +02:00
Erick Tryzelaar
b1cb5379de
Add `#[serde(skip_serializing)] to skip serializing some fields
...
Closes #99
2015-07-23 08:07:49 -07:00
Erick Tryzelaar
b0512a4479
Fix deriving traits for fully generic types.
...
Closes #100
2015-07-23 07:25:27 -07:00
Erick Tryzelaar
d4c20829f6
Inline enum visit_map
2015-07-22 10:44:43 -07:00
Erick Tryzelaar
dbe2beacb0
Allow structs to be deserialized from sequences
...
This relies on the sequence to have the same ordering as the
struct field order.
2015-07-22 10:44:43 -07:00
Erick Tryzelaar
1751155a3a
Minor cleanup
2015-07-22 10:44:43 -07:00
Erick Tryzelaar
5dae700aec
Pass struct field names to deserializer
2015-07-22 10:44:42 -07:00
Erick Tryzelaar
affa9382be
Expose variant index to Serializer
2015-07-22 10:44:42 -07:00
Erick Tryzelaar
10f23dddfe
Rename named_* to use {enum,struct,unit}_*
...
This better reflects how they're used.
2015-07-22 10:44:42 -07:00
Erick Tryzelaar
236d40d73e
Add Serializer
hooks for sequence elements
2015-07-16 10:51:01 -04:00
Erick Tryzelaar
ed5b4d7319
Fix serializing generic enums
...
This fixes generic enums with variants that don't use all lifetime
and typarams. Closes #88 .
2015-06-18 08:45:03 -07:00
Erick Tryzelaar
b09c0fc653
Fix an indent typo
2015-06-18 07:49:13 -07:00
Erick Tryzelaar
ac3a3e922f
Fix compilation with rust nightly (613e57b44) and syntex 0.7.0
2015-06-08 06:55:36 -07:00
Erick Tryzelaar
ff8c3b3d51
Initial support for syntex
2015-05-18 23:34:17 -07:00
Erick Tryzelaar
3d0efd123f
Minor cleanup
2015-05-18 22:49:50 -07:00